Advertisement
Guest User

Untitled

a guest
Oct 12th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.92 KB | None | 0 0
  1. DECLARE @instance_name varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'olap_source_db_name')--'AmbicaBI'
  2. DECLARE @ssis_project_name varchar(50) = 'P4S_CREATE_CUBE';
  3. DECLARE @environment_name varchar(70) = @ssis_project_name+'_'+@instance_name;
  4. DECLARE @environment_id int;
  5. DECLARE @server_address varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'olap_server_address')--'dione\sql2012'
  6. DECLARE @relation_server varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'server_address')--'dione\sql2012'
  7. DECLARE @conn_string sql_variant = N'Data Source='+@server_address+';Persist Security Info=False;User ID=ambicaBI_owner;Password=ambicaBIo;Initial Catalog='+@instance_name+';'
  8. DECLARE @inti_catalog sql_variant = N''+@instance_name+''
  9. --DECLARE @job_name varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'olap_job_name')--'P4S_CREATE_CUBE'
  10. DECLARE @job_name varchar(50) = @environment_name
  11. DECLARE @analysis_user varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'analysis_user')--'AMBICA\DsvUser'
  12. DECLARE @query nvarchar(MAX) = ''
  13. DECLARE @analysis_user_pw varchar(50) = (SELECT ParameterValue FROM amb.Plan4SParameters WHERE ParameterName = 'analysis_user_pw')--'AMBICA\DsvUser'
  14. DECLARE @reference_id int
  15.  
  16.  
  17.  
  18. IF NOT EXISTS (SELECT TOP 1 1 FROM [SSISDB].[catalog].[folders] WHERE name = 'Plan4s')
  19.     EXEC [SSISDB].[catalog].[create_folder] @folder_name=N'Plan4s'
  20.  
  21. IF (SELECT TOP 1 1 FROM [SSISDB].[catalog].[environments] WHERE name = @environment_name) = 1
  22.     EXEC [SSISDB].[catalog].[delete_environment] @folder_name = 'Plan4s', @environment_name = @environment_name
  23. EXEC [SSISDB].[catalog].[create_environment] @environment_name = @environment_name, @environment_description=N'Environment for AmbicaBI OLAP module', @folder_name=N'Plan4s'
  24.  
  25. IF (SELECT TOP 1 1 FROM [SSISDB].[catalog].[environment_references] WHERE environment_name = @environment_name) = 1 BEGIN
  26.     SET @reference_id = (SELECT TOP 1 reference_id FROM [SSISDB].[catalog].[environment_references] WHERE environment_name = @environment_name)
  27.     EXEC [SSISDB].[catalog].[delete_environment_reference] @reference_id = @reference_id
  28. END
  29. EXEC [SSISDB].[catalog].[create_environment_reference] @environment_name=@environment_name, @reference_id=@environment_id OUTPUT, @project_name=N'P4S_CREATE_CUBE', @folder_name=N'Plan4s', @reference_type=R
  30.  
  31.  
  32. EXEC [SSISDB].[catalog].[create_environment_variable]
  33.     @variable_name= 'ConnectionString',
  34.     @sensitive=False,
  35.     @description= 'Connection String',
  36.     @environment_name = @environment_name,
  37.     @folder_name= 'Plan4s',
  38.     @value= @conn_string,
  39.     @data_type= 'String'
  40.  
  41. EXEC [SSISDB].[catalog].[create_environment_variable]
  42.     @variable_name= 'InitialCatalog',
  43.     @sensitive=False,
  44.     @description= 'Initial Catalog',
  45.     @environment_name = @environment_name,
  46.     @folder_name= 'Plan4s',
  47.     @value= @inti_catalog,
  48.     @data_type= 'String'
  49.  
  50. EXEC [SSISDB].[catalog].[set_object_parameter_value] @object_type=30, @parameter_name=N'InitialCatalog', @object_name=N'PackageV5.dtsx', @folder_name=N'Plan4s', @project_name=N'P4S_CREATE_CUBE', @value_type=R, @parameter_value=N'InitialCatalog'
  51. EXEC [SSISDB].[catalog].[set_object_parameter_value] @object_type=30, @parameter_name=N'ConnectionString', @object_name=N'PackageV5.dtsx', @folder_name=N'Plan4s', @project_name=N'P4S_CREATE_CUBE', @value_type=R, @parameter_value=N'ConnectionString'
  52.  
  53.  
  54. SET @query = '
  55. USE [SSISDB]
  56. IF NOT EXISTS (SELECT TOP 1 1 FROM sys.database_principals WHERE name = ''' + @analysis_user + ''') BEGIN
  57.     CREATE USER [' + @analysis_user + '] WITH DEFAULT_SCHEMA=dbo;
  58. END
  59.  
  60. USE [SSISDB]
  61. ALTER USER [' + @analysis_user + '] WITH DEFAULT_SCHEMA=dbo
  62. USE [SSISDB]
  63. ALTER ROLE [ssis_admin] ADD MEMBER [' + @analysis_user + ']
  64.  
  65.  
  66. USE [msdb]
  67. IF NOT EXISTS (SELECT TOP 1 1 FROM sys.database_principals WHERE name = ''' + @analysis_user + ''') BEGIN
  68.     CREATE USER [' + @analysis_user + '] WITH DEFAULT_SCHEMA=dbo;
  69. END
  70.  
  71. USE [msdb]
  72. ALTER USER [' + @analysis_user + '] WITH DEFAULT_SCHEMA=dbo
  73. USE [msdb]
  74. ALTER ROLE [SQLAgentUserRole] ADD MEMBER [' + @analysis_user + ']'
  75.  
  76. --print @query
  77. EXEC (@query)
  78.  
  79. --GO
  80.  
  81. set ansi_padding ON
  82.  
  83. DECLARE @jobId binary(16)
  84. SELECT @jobId = job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name)
  85. IF (@jobId IS NOT NULL)
  86. BEGIN
  87.     EXEC msdb.dbo.sp_delete_job @jobId
  88. END
  89.  
  90. SET @query = '
  91. IF NOT EXISTS (SELECT * FROM msdb.sys.server_principals WHERE name = ''' + @analysis_user + ''') BEGIN
  92.     CREATE LOGIN [' + @analysis_user + '] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
  93. END
  94.  
  95. IF NOT EXISTS (SELECT * FROM msdb.sys.credentials WHERE name = ''Plan4sJobRun'') BEGIN
  96.     CREATE CREDENTIAL Plan4sJobRun WITH IDENTITY = ''' + @analysis_user + ''', SECRET= ''' + @analysis_user_pw + '''
  97. END'
  98. EXEC(@query)
  99.  
  100. --DELETE FROM amb.Plan4SParameters WHERE ParameterName = 'analysis_user_pw'
  101. UPDATE amb.Plan4SParameters SET ParameterValue = '' WHERE ParameterName = 'analysis_user_pw'
  102.  
  103. IF NOT EXISTS (SELECT TOP 1 1 FROM msdb..sysproxies WHERE name = 'Plan4sJobRun') BEGIN 
  104.     EXEC msdb.dbo.sp_add_proxy @proxy_name=N'Plan4sJobRun', @credential_name=N'Plan4sJobRun', @enabled=1
  105.     EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name=N'Plan4sJobRun', @subsystem_id=11
  106.     EXEC msdb.dbo.sp_grant_login_to_proxy @proxy_name=N'Plan4sJobRun', @login_name=N'ambicaBI_owner'
  107. END
  108.  
  109.  
  110. SET @query =
  111. 'BEGIN TRANSACTION
  112. DECLARE @ReturnCode INT
  113. SELECT @ReturnCode = 0
  114. IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N''[Uncategorized (Local)]'' AND category_class=1)
  115. BEGIN
  116. EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N''JOB'', @type=N''LOCAL'', @name=N''[Uncategorized (Local)]''
  117. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  118.  
  119. END
  120.  
  121. DECLARE @jobId BINARY(16)
  122. EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N''' + @job_name + ''',
  123.         @enabled=1,
  124.         @notify_level_eventlog=0,
  125.         @notify_level_email=0,
  126.         @notify_level_netsend=0,
  127.         @notify_level_page=0,
  128.         @delete_level=0,
  129.         @description=N''No description available.'',
  130.         @category_name=N''[Uncategorized (Local)]'',
  131.         @owner_login_name=N''ambicaBI_owner'', @job_id = @jobId OUTPUT
  132. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  133. /****** Step [Run SSIS package] ******/
  134. EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N''Run SSIS package'',
  135.         @step_id=1,
  136.         @cmdexec_success_code=0,
  137.         @on_success_action=4,
  138.         @on_success_step_id=2,
  139.         @on_fail_action=4,
  140.         @on_fail_step_id=3,
  141.         @retry_attempts=0,
  142.         @retry_interval=0,
  143.         @os_run_priority=0, @subsystem=N''SSIS'',
  144.         @command=N''/ISSERVER "\"\SSISDB\Plan4s\' + @ssis_project_name + '\PackageV5.dtsx\"" /SERVER "\"' + @relation_server + '\"" /ENVREFERENCE ' + CAST(@environment_id AS VARCHAR) + ' /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E'',
  145.         @database_name=N'''+@instance_name+''',
  146.         @flags=0,
  147.         @proxy_name=N''Plan4sJobRun''
  148. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  149. /****** Step [Mark SUCCESS] ******/
  150. EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N''Mark SUCCESS'',
  151.         @step_id=2,
  152.         @cmdexec_success_code=0,
  153.         @on_success_action=1,
  154.         @on_success_step_id=0,
  155.         @on_fail_action=2,
  156.         @on_fail_step_id=0,
  157.         @retry_attempts=0,
  158.         @retry_interval=0,
  159.         @os_run_priority=0, @subsystem=N''TSQL'',
  160.         @command=N''UPDATE olap.CreateCubeInput
  161. SET Done = 1, EndDateTime = GETDATE() , Result = ''''Success''''
  162. WHERE Done = 0'',
  163.         @database_name=N'''+@instance_name+''',
  164.         @flags=0
  165. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  166. /****** Step [Mark ERROR] ******/
  167. EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N''Mark ERROR'',
  168.         @step_id=3,
  169.         @cmdexec_success_code=0,
  170.         @on_success_action=1,
  171.         @on_success_step_id=0,
  172.         @on_fail_action=2,
  173.         @on_fail_step_id=0,
  174.         @retry_attempts=0,
  175.         @retry_interval=0,
  176.         @os_run_priority=0, @subsystem=N''TSQL'',
  177.         @command=N''UPDATE olap.CreateCubeInput
  178. SET Done = 1, EndDateTime = GETDATE() , Result = ''''Error'''',SsisLogEntry = (select top 1 message
  179. from dbo.sysssislog
  180. where (event=''''User:ScriptTaskLogEntry'''' or event =''''OnError'''')
  181. and source=''''Build and process cube''''
  182. and message not like ''''%modal dialog box%''''
  183. order by starttime desc)
  184. WHERE Done = 0'',
  185.         @database_name=N'''+@instance_name+''',
  186.         @flags=0
  187. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  188. EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
  189. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  190. EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N''(local)''
  191. IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
  192. COMMIT TRANSACTION
  193. GOTO EndSave
  194. QuitWithRollback:
  195.    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
  196. EndSave:
  197.  
  198. '
  199. EXEC (@query)
  200. --print @query
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement