Why did Don Jones say that using Write Host kills a puppy?
Don Jones, a highly experienced author, MVP, and PowerShell expert, famously once said that every time you use Write-Host, you kill a puppy. See Jeffrey Snover's blog for more information.
So, why is it considered so bad? Because it messes with the output streams.
Consider a PowerShell script file with the following two lines.
"This is a test message."
"This is a test message written to Write-Host." | Write-Host
When you run this and redirect the output to a text file, the second message is written to the screen and not written to the text file.
This means that if you run the script from inside some other system, for example a SQL Server Agent job, then you won't be able to capture the output, which is bad.
There are a lot of articles on the web discussing the issue in more detail. Here are a couple that I like.
Write-Host – The gremlin of PowerShell, by Jeff Wouters
Puppycide done right - output versus messages
Microsoft products in the Defender family
Microsoft describe Microsoft Defender XDR and Microsoft Defender for Cloud as their XDR products, with Microsoft Sentinel as their SIEM and SOAR product.
They are, however, very lax with these names. Sometimes they will use "Microsoft Defender for Endpoint", sometimes "Microsoft 365 Defender for Endpoint". There are also plenty of learn.microsoft.com pages using one or more of the old names.
Exchange Server Recipients
There are a number of types of Exchange Server recipients, differentiated by the RecipientType and RecipientTypeDetails properties. The following are the common mailbox-enabled recipients.
SQL Server Options for Auditing
Server Audit
Captures: Who did (or failed to do) what command and when
Does not capture: What rows/values they touched.
Applies To: SQL Server 2008 Enterprise, SQL Server 2012+ Standard.
Azure SQL Database does have auditing, but it is a different architecture.
Change Data Capture
Captures: What values were inserted, updated or deleted
Does not capture: Who or when, SELECT
Applies To: 2008+ Enterprise
DML Trigger
Captures: Who did an INSERT, UPDATE or DELETE on a table or view, and when and what
Does not capture: SELECT
Notes: Do not fire for all statements (e.g. TRUNCATE TABLE, BULK INSERT)
Applies To: SQL Server, Azure SQL Database.
DDL Trigger - Database scope
Captures: Who CREATEd, ALTERed or DROPped objects in a database
Notes: Does not fire for all statements (e.g. DISABLE TRIGGER).
Applies To: SQL Server, Azure SQL Database.
DDL Trigger - server scope
Captures: Who CREATEd, ALTERed or DROPped objects at the server level.
Notes: Does not fire for all statements (e.g. RESTORE DATABASE).
Applies To: SQL Server.
Logon Trigger - server scope
Captures: Who logged on and when.
Applies To: SQL Server, Azure Synapse Analytics (TOCHECK).
Profiler, Server Trace, Extended Events
Captures: Commands sent to the server.
Does not capture: The results of the commands.
Applies To: SQL Server.
Big Data Architecture with Azure
Diagrams
Book Recommendations
Mastering Azure Analytics, by Zoiner Tejada.
Beginning Apache Spark Using Azure Databricks: Unleashing Large Cluster Analytics in the Cloud, by Robert Ilijason. I haven't read this but have had it recommended to me.
Understanding Azure Data Factory: Operationalizing Big Data and Advanced Analytics Solutions, by Sudhir Rawat and Abhishek Narain. I haven't read this but have had it recommended to me.
Architecture
There are a number of different high-level architecture diagrams available for big data processing, with various names for the phases.
The most common version has nine phases: Data Sources, Data Storage, Real-Time Message Ingestion, Batch Processing, Stream Processing, Machine Learning, Analytics & Reporting, Orchestration.
https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/
Some Microsoft docs simplify it into four phases: Load & Ingest, Store, Process, Serve. Annoyingly, they often name them differently. For example, course DP-201 and its exam use the terms Ingestion, Data Storage, Analysis, and Virtualization. Except where they use Ingest, Process, Store, and Analyse/Report. Courses DP-200 and DP-203 (and their associated exams) use Ingest, Store, Prep & Train, and Model & Serve. Sheesh.
https://docs.microsoft.com/en-us/azure/architecture/data-guide/big-data/
Choice of Batch Processing services
Azure Databricks, Azure Synapse Analytics and Azure HDInsight have a lot of overlap between their use cases (the Batch Processing section of the big picture). I guess Fabric is also going to be a choice, when Microsoft release it in a working state. :-)
https://adatis.co.uk/databricks-vs-synapse-spark-pools-what-when-and-where/
https://www.clearpeaks.com/cloud-analytics-on-azure-databricks-vs-hdinsight-vs-data-lake-analytics/
https://stackoverflow.com/questions/50679909/azure-data-lake-vs-azure-hdinsight
https://visualbi.com/blogs/microsoft/azure/etl-azure-databricks-vs-data-lake-analytics/
We could also mention Azure Batch, though it is more an HPC service than a BI service.
https://azure.microsoft.com/en-us/services/batch/
Note that Azure Data Lake Analytics hasn't seen any updates for a couple of years (and its query language, U-SQL, doesn't support Data Lake Storage Gen2). It seems to have been abandoned.



