[英]Invoke-Sqlcmd there is already an object named _ in the database
我正在运行一个PowerShell脚本,该脚本创建一个数据库和一个表,如下所示:
Invoke-Sqlcmd -Query @"
IF NOT EXISTS (SELECT name FROM master.sys.databases WHERE name = N'ADDB')
CREATE DATABASE[ADDB]
GO
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = N'UserData')
BEGIN
CREATE TABLE ADDB.dbo.UserData (
SamAccountName varchar(255) NOT NULL PRIMARY KEY,
TeamName varchar(255) NULL,
BuildingName varchar(255) NULL
);
END
"@
第一次运行此程序时,一切正常,并且没有任何错误。 但是,如果我再次运行此命令,则会出现以下错误:
数据库中已经有一个名为“ UserData”的对象。
脚本的其余部分和后续的invoke-sqlcmds运行良好,并且表已正确更新。 在我看来,它几乎就像在忽略第二个“如果不存在”。
如果我是第一次在SQL Server Management Studio 2012中运行此命令,它将表示命令已成功运行; 如我所料。
第二次,我希望和我一样,CREATE TABLE子句仅在表不存在时才运行。 在第二种情况下,它确实存在,但出现以下错误:
消息2714,级别16,状态6,第8行在数据库中已经有一个名为“ UserData”的对象。
因此,我在这里得出的唯一结论是,问题肯定出在我对查询进行编码的方式上。
关于如何解决此问题的任何建议将不胜感激。
您永远不会更改数据库上下文,因此它会在您启动的任何数据库中查看INFORMATION_SCHEMA
(可能是master
?)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.