Create Notebook from sql file.ps1 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. SELECT @masterpid = principal_id FROM master.sys.database_principals (NOLOCK) WHERE sid = SUSER_SID()
  26. INSERT INTO @permstbl
  27. SELECT a.name
  28. FROM master.sys.all_objects a (NOLOCK) INNER JOIN master.sys.database_permissions b (NOLOCK) ON a.[OBJECT_ID] = b.major_id
  29. WHERE a.type IN ('P', 'X') AND b.grantee_principal_id <>0
  30. AND b.grantee_principal_id <> 2
  31. AND b.grantee_principal_id = @masterpid;
  32. SELECT @instancename = CONVERT(VARCHAR(128),SERVERPROPERTY('InstanceName'))
  33. SELECT @server = RTRIM(CONVERT(VARCHAR(128), SERVERPROPERTY('MachineName')))
  34. SELECT @sqlmajorver = CONVERT(int, (@@microsoftversion / 0x1000000) & 0xff)
  35. SELECT @sqlminorver = CONVERT(int, (@@microsoftversion / 0x10000) & 0xff)
  36. SELECT @sqlbuild = CONVERT(int, @@microsoftversion & 0xffff)
  37. SELECT @clustered = CONVERT(bit,ISNULL(SERVERPROPERTY('IsClustered'),0))
  38. SELECT @dbScope = NULL -- (NULL = All DBs; '<database_name>')
  39. SELECT @ptochecks = 1 -- 1 for enable 0 for disable
  40. IF EXISTS (SELECT [object_id]
  41. FROM tempdb.sys.objects (NOLOCK)
  42. WHERE [object_id] = OBJECT_ID('tempdb.dbo.##bpvars'))
  43. SELECT @ostype = (SELECT VarValue FROM ##bpvars WHERE VarName = 'ostype');
  44. IF @sqlmajorver > 10
  45. BEGIN
  46. DECLARE @IsHadrEnabled tinyint
  47. SELECT @IsHadrEnabled = CASE WHEN SERVERPROPERTY('EngineEdition') = 8 THEN 1 ELSE CONVERT(tinyint, SERVERPROPERTY('IsHadrEnabled')) END;
  48. END
  49. "@
  50. # We don't need the first or the last as they are only required for the sp
  51. $Cells = foreach ($Chunk in $SplitSQL[1..($SplitSQL.Length -2)]) {
  52. if ($Chunk.Trim().StartsWith('#sponly#') -or $Chunk.Trim().StartsWith('-- #sponly#')) {
  53. # Ignore this tag
  54. }
  55. elseif ($Chunk.trim().StartsWith('--')) {
  56. ## This is a text block
  57. $MarkDown = $Chunk.Trim().Replace('--', '').replace('*/','')
  58. New-ADSWorkBookCell -Type Text -Text $MarkDown
  59. }
  60. else {
  61. ## This is a code block
  62. try {
  63. $Code = $GlobalVariables + $Chunk.Trim()
  64. New-ADSWorkBookCell -Type Code -Text $Code
  65. }
  66. catch {
  67. Write-Warning "Gah it went wrong"
  68. }
  69. }
  70. }
  71. New-ADSWorkBook -Type SQL -Path .\BPCheck\DynamicBPCheck.ipynb -cells $Cells
  72. azuredatastudio.cmd .\BPCheck\DynamicBPCheck.ipynb