MSSQL 中 "GO" 的正确语法是什么?
What is the proper syntax of "GO" in MSSQL?
我正在尝试 运行 一个将登录添加到 MSSQL 的脚本,它包含两个 GO 命令,这两个命令都会产生错误:Msg 102 ... 'GO' 附近的语法不正确。以下示例代码 运行s 在名为 MyDB
的数据库上
DECLARE @currentUsername varchar(30);
DECLARE @password varchar(10);
SET @currentUsername = 'thisisatest';
SET @password = 'mypassword13';
DECLARE @addUser varchar(1000);
SET @addUser = '
CREATE LOGIN ' + @currentUsername + '
WITH PASSWORD = ''' + @password + ''',
DEFAULT_DATABASE = [MyDB]
GO
USE MyDB
CREATE USER ' + @currentUsername + ' FOR LOGIN ' + @currentUsername + '
EXEC sp_addrolemember ''db_datareader'', ''' + @currentUsername + '''
EXEC sp_addrolemember ''db_datawriter'', ''' + @currentUsername + '''
GO
';
PRINT @addUser;
EXEC (@addUser);
GO
不是常规的 SQL 语句。来自 MSDN:
GO
is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.
尝试像这样将其分解为多个调用:
DECLARE @currentUsername varchar(30);
DECLARE @password varchar(10);
SET @currentUsername = 'thisisatest';
SET @password = 'mypassword13';
DECLARE @addUser varchar(1000);
SET @addUser = '
CREATE LOGIN ' + @currentUsername + '
WITH PASSWORD = ''' + @password + ''',
DEFAULT_DATABASE = [MyDB]
';
PRINT @addUser;
EXEC (@addUser);
SET @addUser = '
USE MyDB
CREATE USER ' + @currentUsername + ' FOR LOGIN ' + @currentUsername + '
EXEC sp_addrolemember ''db_datareader'', ''' + @currentUsername + '''
EXEC sp_addrolemember ''db_datawriter'', ''' + @currentUsername + '''
';
PRINT @addUser;
EXEC (@addUser);
我正在尝试 运行 一个将登录添加到 MSSQL 的脚本,它包含两个 GO 命令,这两个命令都会产生错误:Msg 102 ... 'GO' 附近的语法不正确。以下示例代码 运行s 在名为 MyDB
的数据库上DECLARE @currentUsername varchar(30);
DECLARE @password varchar(10);
SET @currentUsername = 'thisisatest';
SET @password = 'mypassword13';
DECLARE @addUser varchar(1000);
SET @addUser = '
CREATE LOGIN ' + @currentUsername + '
WITH PASSWORD = ''' + @password + ''',
DEFAULT_DATABASE = [MyDB]
GO
USE MyDB
CREATE USER ' + @currentUsername + ' FOR LOGIN ' + @currentUsername + '
EXEC sp_addrolemember ''db_datareader'', ''' + @currentUsername + '''
EXEC sp_addrolemember ''db_datawriter'', ''' + @currentUsername + '''
GO
';
PRINT @addUser;
EXEC (@addUser);
GO
不是常规的 SQL 语句。来自 MSDN:
GO
is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.
尝试像这样将其分解为多个调用:
DECLARE @currentUsername varchar(30);
DECLARE @password varchar(10);
SET @currentUsername = 'thisisatest';
SET @password = 'mypassword13';
DECLARE @addUser varchar(1000);
SET @addUser = '
CREATE LOGIN ' + @currentUsername + '
WITH PASSWORD = ''' + @password + ''',
DEFAULT_DATABASE = [MyDB]
';
PRINT @addUser;
EXEC (@addUser);
SET @addUser = '
USE MyDB
CREATE USER ' + @currentUsername + ' FOR LOGIN ' + @currentUsername + '
EXEC sp_addrolemember ''db_datareader'', ''' + @currentUsername + '''
EXEC sp_addrolemember ''db_datawriter'', ''' + @currentUsername + '''
';
PRINT @addUser;
EXEC (@addUser);