データベース内の各アクセス許可に対して許可スクリプトを生成するストアドプロシージャがあります。グラントスクリプトが生成された後、私はどのようにスクリプトを自動的に実行するのだろうかと思っていましたか? (?この作品は意志)SQL Server動的ステートメントを実行するには
PROCEDURE [dbo].[IPAM_GRANT_DB_PERMS_SCRIPT]
@GRANTACTION NVARCHAR(20),
@TYPE NVARCHAR(20),
@ACTION INT
AS
DECLARE @SQL NVARCHAR(2000)
BEGIN
SET @SQL = ''
SELECT @SQL = (SELECT 'GRANT ' + @GRANTACTION + ' ON ' + 'a.name TO ' + user_name(b.uid) FROM SYSOBJECTS a ,SYSPROTECTS b WHERE a.TYPE IN (@TYPE) AND USER_NAME(b.UID) <> 'public' AND a.NAME NOT LIKE 'dt_%' AND a.ID=b.ID AND [email protected]
EXEC @SQL
PRINT @SQL
END
そして、ここでは、私が考えていたものである
PROCEDURE IPAM_EX_PERMS
AS
BEGIN
PRINT '--Initiating DELETE permissions--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'DELETE', 'U', 196
PRINT '--Completed DELETE permissions--'
PRINT ''
PRINT ''
PRINT '--Initiating INSERT permissions--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'INSERT', 'U', 195
PRINT '--Completed INSERT permissions--'
PRINT ''
PRINT ''
PRINT '--Initiating SELECT permissions--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'SELECT', 'U', 193
PRINT '--Completed SELECT permissions--'
PRINT ''
PRINT ''
PRINT '--Initiating UPDATE permissions--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'UPDATE', 'U', 197
PRINT '--Completed UPDATE permissions--'
PRINT ''
PRINT ''
PRINT '--Initiating EXECUTE permissions on Procedures--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'EXECUTE', 'P', 224
PRINT '--Completed EXECUTE permissions on Procedures--'
PRINT ''
PRINT ''
PRINT '--Initiating EXECUTE permissions on Functions--'
EXEC IPAM_GRANT_DB_PERMS_SCRIPT 'EXECUTE', 'Fn', 224
PRINT '--Completed EXECUTE permissions on Functions--'
PRINT ''
PRINT ''
PRINT ''
PRINT 'Finished processing grant permissions on the IPAM DB'
END
GO
:ここ
私の手順です(私の目標は、スクリプトを作成して、自動的にスクリプトを実行することです)
最後のかっこがありませんでした。しかし、私はIPAM_EX_PERMSを実行しているときにこのエラーを受け取っています。サブクエリは1つ以上の値を返しました。サブクエリが=、!=、<, <= , >、> =、またはサブクエリが式として使用されているときは、これは許可されません。 – mattgcon