2013-11-22 170 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' 
相關問題