说,我刚刚创建了一个数据库,然后创建了一个登录,现在我需要为其分配一个用户。所以我这样做:
CREATE DATABASE [testdb2] COLLATE SQL_Latin1_General_CP1_CI_AS;
CREATE LOGIN testusr1 WITH PASSWORD = 'mystrongpassword';
USE [testdb2];
CREATE USER testusr1 FOR LOGIN testusr1;
但USE
行会返回此错误:
数据库'testdb2'不存在。确保输入名称 正确。
答案 0 :(得分:4)
添加一些GO命令:
向SQL发出一批Transact-SQL语句的结束信号 服务器实用程序。
例如,
CREATE DATABASE [testdb2] COLLATE SQL_Latin1_General_CP1_CI_AS;
GO
CREATE LOGIN testusr1 WITH PASSWORD = 'mystrongpassword';
GO
USE [testdb2];
GO
CREATE USER testusr1 FOR LOGIN testusr1;
GO不是Transact-SQL语句;这是一个被公认的命令 sqlcmd和osql实用程序以及SQL Server Management Studio代码 编辑。 SQL Server实用程序将GO解释为它们应该的信号 将当前批处理的Transact-SQL语句发送到 SQL Server。当前批次的陈述由所有人组成 自上次GO以来或自ad hoc开始以来输入的语句 会话或脚本,如果这是第一个GO。 Transact-SQL语句 不能占用与GO命令相同的行。但是,这条线可以 包含评论。用户必须遵守批次规则。对于 例如,在第一个语句之后执行存储过程 批处理中必须包含EXECUTE关键字。当地的范围 (用户定义的)变量仅限于批次,而不能 在GO命令之后引用。
答案 1 :(得分:0)
您必须在CREATE DATABASE语句之后以及CREATE LOGIN语句之后使用GO。
GO用作批处理分隔符。如果要将其他内容用作批处理分隔符而不是GO,则可以更改此设置。转到工具 - >选项 - >查询执行,请参阅批处理分隔符部分。
GO也可以与int参数一起使用,例如:
INSERT INTO #tmp
SELECT 1, 2, 3
GO 10
将值插入#tmp 10次。