首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在VS 2012中,如何在SQL Server数据库项目中存储静态数据

在VS 2012中,如何在SQL Server数据库项目中存储静态数据
EN

Stack Overflow用户
提问于 2012-12-12 23:34:16
回答 1查看 8.5K关注 0票数 23

我正在尝试使用SQL Server数据库项目来保存我们所有的表、存储过程、视图等脚本。我现在想要一种方法,能够同时保留我们所有的引用(静态)数据。当工具或项目运行时,它将安装所有的DB对象,并插入所有的参考数据。

我在VS2010上找到了类似的文章,但他们使用的是Team Edition for Database professionals。

  • 将我们的数据库置于源代码下,并在源代码管理中使用最新版本的本地开发数据库。
  • 与Visual Studio2012和SQL Server2012协同工作
  • 尽可能使用.Net工具,而不是像Redgate那样的工具(Redgate很棒,但如果我可以使用VS 2012中的工具,我还不想放弃它)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-22 01:22:03

您可以使用此方法:

  • 将参考数据放入XML文件中,每个表一个
  • 将包含参考数据的XML文件添加到数据库项目
  • 使用部署后脚本从XML中提取数据并将其合并到表中

下面是每个步骤的更详细的描述,并通过一个示例进行说明。假设您需要初始化一个具有以下结构的国家/地区表:

代码语言:javascript
复制
create table Country (
    CountryId uniqueidentifier NOT NULL,
    CountryCode varchar(2) NOT NULL,
    CountryName varchar(254) NOT NULL
)

在数据库项目下创建一个名为ReferenceData的新文件夹。它应该是Schema ObjectsScripts的同级文件夹。

ReferenceData文件夹中添加一个名为Country.xml的新XML文件。按如下方式填充该文件:

代码语言:javascript
复制
<countries>
    <country CountryCode="CA" CountryName="Canada"/>
    <country CountryCode="MX" CountryName="Mexico"/>
    <country CountryCode="US" CountryName="United States of America"/>
</countries>

找到Script.PostDeployment.sql,并在其中添加以下代码:

代码语言:javascript
复制
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中尝试了这个解决方案,但它应该与您的开发环境无关。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13843164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档