2013-11-22 124 views
3

当用户使用Windows身份验证登录到SQL Server时,需要自动创建数据库(并创建表等)。如果用户名是smith,则会创建一个名为smith的新数据库,并且用户将拥有对该数据库的完全访问权限。用户登录时在SQL Server中自动创建数据库

任何想法如何做到这一点?

+3

做些力所能及,但它是写一个显著的努力,测试,调试并确保它是既安全又安全。 – RBarryYoung

+2

这是一个非常糟糕的主意。您是否考虑在现有数据库中创建模式?如果两个史密斯登录会怎么样? –

+0

感谢您的意见。我找到了解决方案 - 有一个登录触发器。所以我可以创建数据库并在触发器中加载数据。 – user3019981

回答

0

第一个问题就是为什么你想在每次有人登录时创建一个新的数据库。为什么不重用现有的数据库?如果有人登录1000次会发生什么 - 您将创建大量数据库!

要创建数据库,你可以使用类似以下的命令(在批处理脚本)

if exists (select * from sys.syslogins where name='$(dbname)') 
    drop login $(dbname); 
GO 

if exists(select * from sys.databases where name='$(dbname)') 
    drop database $(dbname); 
GO 

create database $(dbname); 
GO 

EXEC sp_addsrvrolemember '$(dbloginname)', 'bulkadmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'dbcreator' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'diskadmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'processadmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'securityadmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'serveradmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'setupadmin' 
EXEC sp_addsrvrolemember '$(dbloginname)', 'sysadmin' 
相关问题