Sql server 生成SQL脚本,首先使用Entity Framework v6.1代码为初始数据种子
在部署使用EntityFrameworkV6.1代码的应用程序时,我首先使用Sql server 生成SQL脚本,首先使用Entity Framework v6.1代码为初始数据种子,sql-server,deployment,ef-code-first,entity-framework-6,Sql Server,Deployment,Ef Code First,Entity Framework 6,在部署使用EntityFrameworkV6.1代码的应用程序时,我首先使用updatedatabase-Script来获取可以对数据库执行的SQL语句。我如何生成一个类似的脚本,该脚本将为我的数据库添加初始数据?我的生产服务器没有安装Visual Studio,也不希望在那里安装它。我希望能够向DBA提供一个用于创建模式的脚本(如上所述),以及一个用于播种初始数据的脚本。假设您有一个已经播种的数据库,SSMS中有一个导出功能(仅数据),允许您创建种子数据脚本。这里有一篇好文章。() 前提是使用
updatedatabase-Script
来获取可以对数据库执行的SQL语句。我如何生成一个类似的脚本,该脚本将为我的数据库添加初始数据?我的生产服务器没有安装Visual Studio,也不希望在那里安装它。我希望能够向DBA提供一个用于创建模式的脚本(如上所述),以及一个用于播种初始数据的脚本。假设您有一个已经播种的数据库,SSMS中有一个导出功能(仅数据),允许您创建种子数据脚本。这里有一篇好文章。()
前提是使用预种子数据库作为模型。这是对上面链接中的keyholesoftware信息的重新哈希,以及一些我个人认为有用的评论
- 选择初始种子数据库并右键单击|任务|
生成脚本
- 从对象中选择表
- 使用单个
每个表的文件(提供更多控制)
- 选择一个目录
(沙箱)保存种子数据的地方(您应该创建一个文件夹
在此位置的visual studio项目中。(如果需要
文件保存在原始状态,请为您的位置选择一个沙箱,然后
然后将它们移动到完成此部分后创建的文件夹中
(这是出口的一部分。)
- 在高级部分(高级按钮)更改
“数据类型”仅适用于数据
- 脚本“使用数据库”以
false(您仍处于高级部分,请执行此操作以导出到文件)并完成此部分,关闭高级部分,然后关闭向导
将这些交给DBA—另一方面,假设您有Visual Studio:
- 回到VS(我使用的是VS2017),显示所有文件(它是解决方案资源管理器中的一个图标)
(右)
- 包括导出的表(从您创建的沙箱中)
刚刚创建)。您需要设置每个
从“build”到“none”(这是酒店的首选),或者
关闭您的项目,并编辑要删除的项目的csproj文件
更改它处理包含文件的方式。我使用alt Enter键
打开每个属性并将构建设置为无。(如果发生这种情况,您将看到的错误是“SQL71006”)
- 如果你有
在项目中的postdeploy文件夹中,右键单击该文件夹(或
立即创建它,并将文件从“沙盒”复制到此文件夹
- 右击
部署后文件夹和添加脚本|“部署后脚本”
- 在VS中打开脚本。选择“sqlcmd”模式。此处警告-make
确保您的网络允许sqlcmd运行-有些限制其运行
功能-如果您不确定您的系统是什么,请与您的系统管理员联系
生产环境因限制而保留
- 为要使用种子数据的表添加命令。您可能需要
使用SSMS在表上编写拖放和创建脚本,以便
可以绕过可能阻止您跑步的约束
您的表脚本。我从用户开始-我立即不得不
删除该表中的约束以便导入
它们在运行部署后脚本和
然后在脚本末尾重新创建约束
- 清理并重建数据库项目
- 发布您的项目-it
应创建数据库并添加种子数据(打开发布-
连接到要发布的数据库-保存配置文件-
使用默认位置-单击“发布”
- 这个过程应该是
能够重复自己。最初几次我删除并重新创建
该数据库,但在当前版本上重新发布似乎只起作用
好的
注意-如果您得到SQL71006错误,请参见此处的jamie thompson的答案:
定义“使用初始数据为我的数据库设置种子”。如果你是指查找表,那么你应该用Insert
和值编写脚本。除非我在这里完全遗漏了什么。我应该更具体一些。我的Seed()中有代码
我的配置.cs
文件中的方法。我正在寻找一种方法来执行此代码并获取数据库中的数据更改并创建SQL脚本。此代码将角色添加到表中,但使用Identity framework来执行此操作,从而生成标识列的GUID。您不能通过迁移编写脚本。您可以通过SSMS,如上所述,我使用代码中的种子标识。这与迁移种子不同,仅在创建数据库时运行。另一个选项可能是使用。