Anda dapat menggunakan pendekatan ini:
- Masukkan data referensi Anda ke dalam file XML, satu per tabel
- Tambahkan file XML dengan data referensi ke proyek database Anda
- Gunakan skrip Pasca-Penerapan untuk mengekstrak data dari XML dan menggabungkannya ke dalam tabel Anda
Berikut adalah deskripsi yang lebih rinci dari setiap langkah, diilustrasikan dengan sebuah contoh. Katakanlah Anda perlu menginisialisasi tabel negara yang memiliki struktur ini:
create table Country (
CountryId uniqueidentifier NOT NULL,
CountryCode varchar(2) NOT NULL,
CountryName varchar(254) NOT NULL
)
Buat folder baru bernama ReferenceData
di bawah proyek database Anda. Itu harus menjadi folder saudara dari Schema Objects
dan Scripts
.
Tambahkan file XML baru bernama Country.xml
ke ReferenceData
map. Isi file sebagai berikut:
<countries>
<country CountryCode="CA" CountryName="Canada"/>
<country CountryCode="MX" CountryName="Mexico"/>
<country CountryCode="US" CountryName="United States of America"/>
</countries>
Temukan Script.PostDeployment.sql
, dan tambahkan kode berikut ke dalamnya:
DECLARE @h_Country int
DECLARE @xmlCountry xml = N'
:r ..\..\ReferenceData\Country.xml
'
EXEC sp_xml_preparedocument @h_Country OUTPUT, @xmlCountry
MERGE Country AS target USING (
SELECT c.CountryCode, c.CountryName
FROM OPENXML(@h_Country, '/countries/country', 1)
WITH (CountryCode varchar(2), CountryName varchar(254)) as c) AS source (CountryCode, CountryName)
ON (source.CountryCode = target.CountryCode)
WHEN MATCHED THEN
UPDATE SET CountryName = source.CountryName
WHEN NOT MATCHED BY TARGET THEN
INSERT (CountryId, CountryCode, CountryName) values (newid(), source.CountryCode, source.CountryName)
;
Saya mencoba solusi ini hanya di VS 2008, tetapi seharusnya tidak sesuai dengan lingkungan pengembangan Anda.