我正在尝试使用SQL Server数据库项目来保存我们所有的表、存储过程、视图等脚本。我现在想要一种方法,能够同时保留我们所有的引用(静态)数据。当工具或项目运行时,它将安装所有的DB对象,并插入所有的参考数据。
我在VS2010上找到了类似的文章,但他们使用的是Team Edition for Database professionals。
发布于 2012-12-22 01:22:03
您可以使用此方法:
下面是每个步骤的更详细的描述,并通过一个示例进行说明。假设您需要初始化一个具有以下结构的国家/地区表:
create table Country (
CountryId uniqueidentifier NOT NULL,
CountryCode varchar(2) NOT NULL,
CountryName varchar(254) NOT NULL
)
在数据库项目下创建一个名为ReferenceData
的新文件夹。它应该是Schema Objects
和Scripts
的同级文件夹。
在ReferenceData
文件夹中添加一个名为Country.xml
的新XML文件。按如下方式填充该文件:
<countries>
<country CountryCode="CA" CountryName="Canada"/>
<country CountryCode="MX" CountryName="Mexico"/>
<country CountryCode="US" CountryName="United States of America"/>
</countries>
找到Script.PostDeployment.sql
,并在其中添加以下代码:
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)
;
我只在VS2008中尝试了这个解决方案,但它应该与您的开发环境无关。
https://stackoverflow.com/questions/13843164
复制相似问题