循环用于在SQL中创建多个数据库和用户,将用户分配给数据库

时间:2016-07-02 21:38:27

标签: sql sql-server

  使用Windows身份验证创建登录后

,            需要将用户分配给数据库            并为该用户提供权限。            有谁可以帮助我。           提前致谢。

    -- BULK INSERT tempNames.dbo.tempNames
             --      FROM 'C:\Users\Videos\file.txt'
                --   WITH 
            --        (
                  --      ROWTERMINATOR ='\n'--
                    --  )

                USE [master]
                GO

                DECLARE @NameCursor as CURSOR;
                DECLARE @NAME AS NVARCHAR(50);
                DECLARE @NAME2 AS NVARCHAR(50);
                DECLARE @NIUNT AS NVARCHAR(50);

                SET @NIUNT ='niunt';

                SET @NameCursor = CURSOR FOR
                SELECT id
                 FROM test.dbo.Sheet1$

                OPEN @NameCursor;
                FETCH NEXT FROM @NameCursor INTO @Name;

                WHILE @@FETCH_STATUS = 0
                BEGIN
                PRINT @Name 

使用@name

创建数据库
                set @name2 ='create database '+@Name + ';'

                  exec (@name2)

                  BEGIN
                    SET NOCOUNT ON
                    DECLARE @SQL NVARCHAR(4000);

使用@name

创建登录
                    SET @SQL = 'CREATE LOGIN [' +@NIUNT +'\'+ @NAME + '] from windows';                    
                    exec(@SQL); 

                    -END;


                 FETCH NEXT FROM @NameCursor INTO @Name;

                 END 

                GO

1 个答案:

答案 0 :(得分:0)

这非常错综复杂。直接操作实际代表身份验证和授权数据的底层系统表似乎更容易。然后你不必用游标等来搞砸。

例如,让我们说登录由表SYS $ LOGINS表示,字段为SYS $ USERNAME和SYS $ PASSWORD。是不是只为用户插入记录更容易' joe'进入该表(让我们不要担心加密密码的存储细节:它只是一个简单的例子!)而不是必须定义游标,构造SQL字符串,以及exec()它们?

我认为你必须成为SYSTEM用户才能做到这一切,但我相信你已经做到了。