Nor*_*een 5 database-project visual-studio-2013
我有一个 Visual Studio 数据库项目,关于此类项目的文档似乎很少且粗略。
问题:我想重命名一个列。
问题:我想要重命名列的表中有数据,因此每次生成脚本时,我都会得到这段代码,该代码会导致脚本崩溃,因为表中有数据。
IF EXISTS (select top 1 1 from [dbo].[res_file_submission])
RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT
Run Code Online (Sandbox Code Playgroud)
我不知道如何解决这个问题,而且我真的不相信删除这一行就是答案,我已经取消选择“如果可能发生数据丢失,则阻止增量部署”选项,但这似乎没有什么区别。
更新:该列有一个约束,这似乎是原因。
您可以通过部署前和部署后脚本来处理此问题。
创建预部署脚本来备份表并删除其数据:
if (OBJECT_ID('TempDB..#MyTableBackup') is null)
begin
-- backup data to a temp table
SELECT *
INTO #MyTableBackup
FROM MyTable
-- TODO: If you have foreign key constraints that reference MyTable, you'll need to disable them here.
-- delete the data in your table
DELETE MyTable
end
Run Code Online (Sandbox Code Playgroud)
创建恢复数据的部署后脚本:
-- TODO: Only include the SET IDENTITY_INSERT lines if your table has an identity column
--SET IDENTITY_INSERT MyTable ON
INSERT MyTable
SELECT *
FROM #MyTableBackup
--SET IDENTITY_INSERT MyTable OFF
-- TODO: If you disabled foreign key constraints in the pre-deployment script, enable them here.
DROP TABLE #MyTableBackup
Run Code Online (Sandbox Code Playgroud)
由于预部署脚本清空了表,因此列重命名将在部署的常规部分期间发生,而不会收到“阻止增量部署...”警告。
请务必在部署成功后从项目中删除这些脚本,以便它们在下次部署期间不会重新运行。
| 归档时间: |
|
| 查看次数: |
3978 次 |
| 最近记录: |