Sql server 如何在SQL脚本出现错误后继续执行批处理中的其他语句?

Sql server 如何在SQL脚本出现错误后继续执行批处理中的其他语句?,sql-server,Sql Server,我正在使用Visual Studio 2012服务器资源管理器中的新查询窗口。在这里 是我尝试执行的脚本: ALTER TABLE [dbo].[webpages_UsersInRoles] DROP CONSTRAINT fk_UserId; ALTER TABLE [dbo].[webpages_UsersInRoles] DROP CONSTRAINT fk_RoleId; DROP TABLE [dbo].[ExtraUserInformation]; DROP TABLE [dbo]

我正在使用Visual Studio 2012服务器资源管理器中的新查询窗口。在这里 是我尝试执行的脚本:

ALTER TABLE [dbo].[webpages_UsersInRoles] DROP CONSTRAINT fk_UserId;
ALTER TABLE [dbo].[webpages_UsersInRoles] DROP CONSTRAINT fk_RoleId;

DROP TABLE [dbo].[ExtraUserInformation];
DROP TABLE [dbo].[UserProfile];
DROP TABLE [dbo].[webpages_Membership];
DROP TABLE [dbo].[webpages_OAuthMembership];
DROP TABLE [dbo].[webpages_Roles];
DROP TABLE [dbo].[webpages_UsersInRoles];

CREATE TABLE [dbo].[ExtraUserInformation] (
    [Id]       INT            IDENTITY (1, 1) NOT NULL,
    [UserId]   INT            NOT NULL,
    [FullName] NVARCHAR (MAX) NULL,
    [Link]     NVARCHAR (MAX) NULL,
    [Verified] BIT            NULL,
    CONSTRAINT [PK_dbo.ExtraUserInformation] PRIMARY KEY CLUSTERED ([Id] ASC)
);
目前没有网页\u UsersInRoles表,它给了我一个错误 留言说:

Msg 4902, Level 16, State 1, Line 5
Cannot find the object "dbo.webpages_UsersInRoles" because it does not exist or you do not have permissions.

在此消息之后,脚本似乎停止了,并且在此消息之后无法创建其他表。是否可以让脚本在通过预期错误后继续?

比继续通过错误更好的方法是测试脚本中的失败条件,例如,仅在表存在时才删除它

而不是:

DROP TABLE [dbo].[webpages_UsersInRoles];
尝试:


(from)

这里有几个选项,这实际上是一个您认为适合您的脚本的问题

  • 您可以将语句放在try/catch块中,然后接受错误
  • 您可以像SMO生成T-SQL时所做的那样,将语句封装在IF语句中,以确保所讨论的对象存在
  • 您应该能够用GO语句分离出您的“部分”,因为它们是作为单独的批发送到数据库的
IF OBJECT_ID('dbo.webpages_UsersInRoles', 'U') IS NOT NULL
  DROP TABLE dbo.webpages_UsersInRoles