Sql server 如何在SQL脚本出现错误后继续执行批处理中的其他语句?
我正在使用Visual Studio 2012服务器资源管理器中的新查询窗口。在这里 是我尝试执行的脚本: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]
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