sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan gemmer du statiske data i dit SQL Server-databaseprojekt i VS 2012

Du kan bruge denne fremgangsmåde:

  • Sæt dine referencedata i XML-filer, én pr. tabel
  • Tilføj XML-filer med referencedata til dit databaseprojekt
  • Brug et Post-Deployment-script til at udtrække dataene fra XML og flette dem ind i dine tabeller

Her er en mere detaljeret beskrivelse af hvert trin, illustreret med et eksempel. Lad os sige, at du skal initialisere en tabel over lande, der har denne struktur:

create table Country (
    CountryId uniqueidentifier NOT NULL,
    CountryCode varchar(2) NOT NULL,
    CountryName varchar(254) NOT NULL
)

Opret en ny mappe kaldet ReferenceData under dit databaseprojekt. Det skal være en søskendemappe til Schema Objects og Scripts .

Tilføj en ny XML-fil kaldet Country.xml til ReferenceData folder. Udfyld filen som følger:

<countries>
    <country CountryCode="CA" CountryName="Canada"/>
    <country CountryCode="MX" CountryName="Mexico"/>
    <country CountryCode="US" CountryName="United States of America"/>
</countries>

Find Script.PostDeployment.sql , og tilføj følgende kode til det:

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)
;

Jeg prøvede kun denne løsning i VS 2008, men den burde være agnostisk for dit udviklingsmiljø.




  1. Tekstfilstruktur (tabeller)

  2. Sådan bruger du SqlTransaction i C#

  3. Er nøgleordet "som" påkrævet i Oracle for at definere et alias?

  4. Hvad betyder *-stjernen i en mysql-sætning?