Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przechowywać dane statyczne w projekcie bazy danych SQL Server w VS 2012?

Możesz użyć tego podejścia:

  • Umieść swoje dane referencyjne w plikach XML, po jednym na tabelę
  • Dodaj pliki XML z danymi referencyjnymi do projektu bazy danych
  • Użyj skryptu po wdrożeniu, aby wyodrębnić dane z XML i scalić je ze swoimi tabelami

Oto bardziej szczegółowy opis każdego kroku, zilustrowany przykładem. Załóżmy, że musisz zainicjować tabelę krajów o następującej strukturze:

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

Utwórz nowy folder o nazwie ReferenceData w ramach projektu bazy danych. Powinien to być folder bliźniaczy Schema Objects i Scripts .

Dodaj nowy plik XML o nazwie Country.xml do ReferenceData teczka. Wypełnij plik w następujący sposób:

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

Znajdź Script.PostDeployment.sql i dodaj do niego następujący kod:

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

Próbowałem tego rozwiązania tylko w VS 2008, ale powinno być niezależne od środowiska programistycznego.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić wiele wartości wierszy oddzielonych przecinkami w jednym wierszu w SQL Server 2005?

  2. Jakie są różnice między przekształceniami Merge Join i Lookup w usługach SSIS?

  3. Zamiana alfabetów na zero w dowolnym ciągu w SQL

  4. Jak zmienić nazwę klucza JSON w SQL Server (T-SQL)

  5. Używanie kolumny Alias ​​w klauzuli WHERE w ms-sql 2000