Create Notebook from sql file.ps1 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. $RawSql = Get-Content .\BPCheck\Check_BP_Servers.sql -Raw
  2. $SplitSQL = $RawSql -split '--------------------------------------------------------------------------------------------------------------------------------'
  3. $GlobalVariables = @"
  4. SET NOCOUNT ON;
  5. SET ANSI_WARNINGS ON;
  6. SET QUOTED_IDENTIFIER ON;
  7. -- Declare Global Variables
  8. DECLARE @UpTime VARCHAR(12),@StartDate DATETIME
  9. DECLARE @agt smallint, @ole smallint, @sao smallint, @xcmd smallint
  10. DECLARE @ErrorSeverity int, @ErrorState int, @ErrorMessage NVARCHAR(4000)
  11. DECLARE @CMD NVARCHAR(4000)
  12. DECLARE @path NVARCHAR(2048)
  13. DECLARE @osver VARCHAR(5), @ostype VARCHAR(10), @osdistro VARCHAR(20), @server VARCHAR(128), @instancename NVARCHAR(128), @arch smallint, @ossp VARCHAR(25), @SystemManufacturer VARCHAR(128), @BIOSVendor AS VARCHAR(128), @Processor_Name AS VARCHAR(128)
  14. DECLARE @existout int, @FSO int, @FS int, @OLEResult int, @FileID int
  15. DECLARE @FileName VARCHAR(200), @Text1 VARCHAR(2000), @CMD2 VARCHAR(100)
  16. DECLARE @src VARCHAR(255), @desc VARCHAR(255), @psavail VARCHAR(20), @psver tinyint
  17. DECLARE @dbid int, @dbname NVARCHAR(1000)
  18. DECLARE @sqlcmd NVARCHAR(max), @params NVARCHAR(600)
  19. DECLARE @sqlmajorver int, @sqlminorver int, @sqlbuild int, @masterpid int, @clustered bit
  20. DECLARE @ptochecks int
  21. DECLARE @permstbl TABLE ([name] sysname)
  22. DECLARE @dbScope VARCHAR(256)
  23. DECLARE @port VARCHAR(15), @replication int, @RegKey NVARCHAR(255), @cpuaffin VARCHAR(300), @cpucount int, @numa int
  24. DECLARE @i int, @cpuaffin_fixed VARCHAR(300), @affinitymask NVARCHAR(64), @affinity64mask NVARCHAR(1024)--, @cpuover32 int
  25. DECLARE @bpool_consumer bit
  26. DECLARE @allow_xpcmdshell bit
  27. DECLARE @custompath NVARCHAR(500) = NULL
  28. DECLARE @affined_cpus int
  29. DECLARE @langid smallint
  30. DECLARE @lpim bit, @lognumber int, @logcount int
  31. DECLARE @query NVARCHAR(1000)
  32. SELECT @masterpid = principal_id FROM master.sys.database_principals (NOLOCK) WHERE sid = SUSER_SID()
  33. INSERT INTO @permstbl
  34. SELECT a.name
  35. FROM master.sys.all_objects a (NOLOCK) INNER JOIN master.sys.database_permissions b (NOLOCK) ON a.[OBJECT_ID] = b.major_id
  36. WHERE a.type IN ('P', 'X') AND b.grantee_principal_id <>0
  37. AND b.grantee_principal_id <> 2
  38. AND b.grantee_principal_id = @masterpid;
  39. SELECT @instancename = CONVERT(VARCHAR(128),SERVERPROPERTY('InstanceName'))
  40. SELECT @server = RTRIM(CONVERT(VARCHAR(128), SERVERPROPERTY('MachineName')))
  41. SELECT @sqlmajorver = CONVERT(int, (@@microsoftversion / 0x1000000) & 0xff)
  42. SELECT @sqlminorver = CONVERT(int, (@@microsoftversion / 0x10000) & 0xff)
  43. SELECT @sqlbuild = CONVERT(int, @@microsoftversion & 0xffff)
  44. SELECT @clustered = CONVERT(bit,ISNULL(SERVERPROPERTY('IsClustered'),0))
  45. SELECT @dbScope = NULL -- (NULL = All DBs; '<database_name>')
  46. SELECT @ptochecks = 1 -- 1 for enable 0 for disable
  47. SELECT @bpool_consumer = 1 -- 1 for enable 0 for disable
  48. SELECT @allow_xpcmdshell = 1 -- 1 for enable 0 for disable
  49. SELECT @custompath = NULL
  50. SELECT @langid = lcid FROM sys.syslanguages WHERE name = @@LANGUAGE
  51. IF NOT EXISTS (SELECT [object_id]
  52. FROM tempdb.sys.objects (NOLOCK)
  53. WHERE [object_id] = OBJECT_ID('tempdb.dbo.dbvars'))
  54. BEGIN
  55. CREATE TABLE tempdb.dbo.dbvars(VarName VarChar(256),VarValue VarChar(256))
  56. END
  57. SELECT @ostype = (SELECT VarValue FROM tempdb.dbo.dbvars WHERE VarName = 'ostype');
  58. SELECT @osver = (SELECT VarValue FROM tempdb.dbo.dbvars WHERE VarName = 'osver');
  59. SELECT @affined_cpus = (SELECT VarValue FROM tempdb.dbo.dbvars WHERE VarName = 'affined_cpus');
  60. IF @sqlmajorver > 10
  61. BEGIN
  62. DECLARE @IsHadrEnabled tinyint
  63. SELECT @IsHadrEnabled = CASE WHEN SERVERPROPERTY('EngineEdition') = 8 THEN 1 ELSE CONVERT(tinyint, SERVERPROPERTY('IsHadrEnabled')) END;
  64. END
  65. "@
  66. # We don't need the first or the last as they are only required for the sp
  67. $Cells = foreach ($Chunk in $SplitSQL[1..($SplitSQL.Length -2)]) {
  68. if ($Chunk.Trim().StartsWith('#sponly#') -or $Chunk.Trim().StartsWith('-- #sponly#')) {
  69. # Ignore this tag
  70. }
  71. elseif ($Chunk.trim().StartsWith('--')) {
  72. ## This is a text block
  73. $MarkDown = $Chunk.Trim().Replace('--', '').replace('*/','')
  74. New-ADSWorkBookCell -Type Text -Text $MarkDown
  75. }
  76. else {
  77. ## This is a code block
  78. try {
  79. $Code = $GlobalVariables + $Chunk.Trim()
  80. New-ADSWorkBookCell -Type Code -Text $Code -Collapse
  81. }
  82. catch {
  83. Write-Warning "Gah it went wrong"
  84. }
  85. }
  86. }
  87. New-ADSWorkBook -Type SQL -Path .\BPCheck\DynamicBPCheck.ipynb -cells $Cells
  88. azuredatastudio.cmd .\BPCheck\DynamicBPCheck.ipynb