Last modified by Rudi Marais on 2024/03/28 18:51

<
From version < 8.20 >
edited by Rudi Marais
on 2024/03/28 18:36
To version < 2.10 >
edited by Rudi Marais
on 2023/05/22 23:49
>
Change comment: Update document after refactoring.

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -migrate to managed instance
1 +migrate to managed-instance
Parent
... ... @@ -1,1 +1,1 @@
1 -technical-documentation.analysis.sql.WebHome
1 +Technical Documentation.analysis.sql.WebHome
Content
... ... @@ -1,58 +1,15 @@
1 -
2 -
1 +* compressed file
2 +* contains ddl and dml data
3 +* doesnt support encrypted objects
4 +* cant have any stored procs with string that contain $( character sequence reserved sequence
5 +** break up sequence ie 'test$(test' become 'test$' + '(test'
6 +* [[https:~~/~~/learn.microsoft.com/en-us/azure/azure-sql/database/database-import>>https://learn.microsoft.com/en-us/azure/azure-sql/database/database-import]]
3 3  * sqlpackage
4 4  ** [[https:~~/~~/download.microsoft.com/download/7/c/8/7c877288-a0d9-4d22-b1dc-2086e262d82f/x64/DacFramework.msi>>https://download.microsoft.com/download/7/c/8/7c877288-a0d9-4d22-b1dc-2086e262d82f/x64/DacFramework.msi]]
5 5  ** [[https:~~/~~/learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download>>https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download]]
6 6  ** C:\Program Files\Microsoft SQL Server\160\DAC\bin
7 7  
8 -
9 -1. put db in readonly mode
10 -11. ALTER DATABASE Everest_Test SET READ_ONLY WITH NO_WAIT
11 -
12 -1. scale db to accetable performance ie dtus 500
13 -
14 -1. turn off real time scan (anti virus)
15 -
16 -1. run bcp extract scripts
17 -11. everest & docs parallel
18 -11. extract run from smallest to largest table
19 -
20 -1. run schema extracts
21 -11. not in parallel!
22 -11. [[https:~~/~~/github.com/microsoft/mssql-scripter>>https://github.com/microsoft/mssql-scripter]]
23 -11. C:\Users\alliancetest\.mssqlscripter
24 -11. mssql-scripter -S "kula.database.windows.net" -d Everest_Test -U ebsadmin -P xxx -r -f E:\temp\khula_test.sql ~-~-display-progress ~-~-enable-toolsservice-logging
25 -
26 -1. create db
27 -
28 -1. create schemas
29 -11. prep scripts first remove non applicable scripting
30 -11. document references
31 -11. make sure ddl audit triggers are disabled
32 -
33 -1. disable all indexes except clustered
34 -
35 -1. run imports [parallel]
36 -11. imports runs from smallest to largest table
37 -
38 -1. verify record counts from pre and post
39 -
40 -1. enable indexes
41 -
42 -1. deploy new ddl audit triggers
43 -​​​​​​​
44 -1. enable ddl trigger
45 -
46 -1. run db security scripts
47 -11. creates db groups and ad groups
48 -
49 -1. update all settings to new environment
50 -
51 -1.
52 -
53 -
54 -
55 -1. run extract with [[sql-script-db.ps1>>doc:technical-documentation.Source Control.migration.sql.sql-db-export.WebHome]] with validate set to true and raw objects set to true, only need tbl-triggers, functions and sp
12 +1. run extract with [[sql-script-db.ps1>>doc:Technical Documentation.Source Control.migration.sql.sql-db-export.WebHome]] with validate set to true and raw objects set to true, only need tbl-triggers, functions and sp
56 56  11. reason for this is to identify any procedure/triggers/functions that dont compile
57 57  1. once this is done examine results and fix stored procedures on database so that they can compile, ie add missing columns or modify code to not require them
58 58  11. repeat step 1 and 2 until you get zero objects that can't compile
... ... @@ -64,121 +64,14 @@
64 64  1. run dacpac publish to managed instance
65 65  1.
66 66  
67 -* (((
68 -(% class="wikigeneratedid" id="Hhttps:2F2Fgithub.com2Fmicrosoft2Fmssql-scripter" %)
69 -[[https:~~/~~/github.com/microsoft/mssql-scripter>>https://github.com/microsoft/mssql-scripter]]
24 += =
70 70  
71 -* C:\Users\alliancetest\.mssqlscripter
72 -* mssql-scripter -S "kula.database.windows.net" -d Everest_Test -U ebsadmin -P xxx -r -f E:\temp\khula_test.sql ~-~-display-progress ~-~-enable-toolsservice-logging
73 73  
74 -
75 -)))
76 76  
77 -{{code language="sql"}}
78 --- index
79 -select concat('echo ''',SCHEMA_NAME(schema_id), '_', BASE64_ENCODE (cast(name as varbinary)), '.bcp ',SCHEMA_NAME(schema_id), '.', name , ''' >> test.log')
80 -from sys.tables
81 -where type = 'U'
82 -and is_ms_shipped = 0
83 -
84 ---and temporal_type in (0,2);
85 -
86 --- export
87 -
88 -select '$path = "E:\temp\test\everest_test"' cmd union
89 -select '$server = "mytest.database.windows.net"' union
90 -select '$username = "sa"' union
91 -select '$password = "123456"' union
92 -select 'New-Item -ItemType Directory -Force -Path "$path\export_log"' union
93 -select 'New-Item -ItemType Directory -Force -Path "$path\data"'
94 -
95 -select export = concat('bcp "', DB_NAME(), '.',
96 - SCHEMA_NAME(schema_id), '.', replace(name,'$','`$'),
97 - '" out "$path\data\', SCHEMA_NAME(schema_id), '_', BASE64_ENCODE (cast(name as varbinary)), '.bcp" ',
98 - ' -e "$path\export_log\', SCHEMA_NAME(schema_id), '_', BASE64_ENCODE (cast(name as varbinary)), '.log" ',
99 - ' -S "', '$server','"',
100 - ' -N -U "$username" -P "$password"',
101 - ' | Out-Null')
102 -from sys.tables
103 -where type = 'U'
104 -and is_ms_shipped = 0
105 ---and temporal_type in (0,2);
106 -
107 --- import
108 -
109 -select '$path = "E:\temp\test\everest_test"' cmd union
110 -select '$target_server = "sqlmi-ebs-prod.public.2a5fe6cde9a7.database.windows.net,3342"' union
111 -select '$target_db = "TST_Staging_Everest"' union
112 -select '$target_username = "import_test"' union
113 -select '$target_password = ''123456''' union
114 -select 'New-Item -ItemType Directory -Force -Path "$path\import_log"' union
115 -select 'New-Item -ItemType Directory -Force -Path "$path\data"'
116 -
117 -select import = concat('bcp "', '$target_db', '.',
118 - SCHEMA_NAME(schema_id), '.', replace(name,'$','`$'),
119 - '" in "$path\data\', SCHEMA_NAME(schema_id), '_', BASE64_ENCODE (cast(name as varbinary)) , '.bcp" ',
120 - ' -e "$path\import_log\', SCHEMA_NAME(schema_id), '_', BASE64_ENCODE (cast(name as varbinary)) , '.log" ',
121 - ' -S "', '$target_server','"',
122 - ' -N -U "$target_username" -P "$target_password"',
123 - ' -b 1000 -E -k -N -q',
124 - ' | Out-Null')
125 -from sys.tables
126 -where type = 'U'
127 -and is_ms_shipped = 0
128 ---and temporal_type in (0,2);
129 -
130 -{{/code}}
131 -
132 -
133 -* disable anti-virus real time scan
134 -*
135 -
136 -(% class="wikigeneratedid" %)
137 -placeholder
138 -
139 139  = Exporting =
140 140  
141 141  * no encrypted objects, they need to be decrypted or removed prior to exporting.
142 142  
143 -SQL 2012
144 -
145 -
146 -
147 -EXEC sp_configure 'show advanced options', 1;
148 -GO
149 -RECONFIGURE;
150 -GO
151 -
152 -EXEC sp_configure 'xp_cmdshell',1
153 -GO
154 -RECONFIGURE
155 -GO
156 -
157 -
158 -EXEC XP_CMDSHELL 'net use O: ~\~\zagpebslab.file.core.windows.net\sqlshare /user:"localhost\zagpebslab" "access_key"'
159 -
160 -EXEC XP_CMDSHELL 'Dir O:'
161 -
162 -
163 -BACKUP DATABASE Everest_TEST
164 -TO DISK = N'O:\ENS_Everest_Test_20230721_1806.bak'
165 -WITH COMPRESSION,
166 -STATS = 10;
167 -
168 -
169 -GO
170 -
171 -
172 -SELECT 
173 - session_id as SPID, command, a.text AS Query, start_time, percent_complete,
174 - dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time
175 -FROM sys.dm_exec_requests r 
176 - CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
177 -WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
178 -
179 -GO
180 -
181 -
182 182  = Importing =
183 183  
184 184  
... ... @@ -193,3 +193,5 @@
193 193  * incubator/ebsphere.crm/ebs-devops-devops-sql/calc-signature-bacpac.ps1
194 194  * modify Origin.xml
195 195  ** Checksum attribute for model.xml
46 +
47 +

Need help?

If you need help with XWiki you can contact: