使用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
set @name2 ='create database '+@Name + ';'
exec (@name2)
BEGIN
SET NOCOUNT ON
DECLARE @SQL NVARCHAR(4000);
SET @SQL = 'CREATE LOGIN [' +@NIUNT +'\'+ @NAME + '] from windows';
exec(@SQL);
-END;
FETCH NEXT FROM @NameCursor INTO @Name;
END
GO
答案 0 :(得分:0)
这非常错综复杂。直接操作实际代表身份验证和授权数据的底层系统表似乎更容易。然后你不必用游标等来搞砸。
例如,让我们说登录由表SYS $ LOGINS表示,字段为SYS $ USERNAME和SYS $ PASSWORD。是不是只为用户插入记录更容易' joe'进入该表(让我们不要担心加密密码的存储细节:它只是一个简单的例子!)而不是必须定义游标,构造SQL字符串,以及exec()它们?
我认为你必须成为SYSTEM用户才能做到这一切,但我相信你已经做到了。