3
當用戶使用Windows身份驗證登錄到SQL Server時,需要自動創建數據庫(並創建表等)。如果用戶名是smith
,則會創建一個名爲smith
的新數據庫,並且用戶將擁有對該數據庫的完全訪問權限。用戶登錄時在SQL Server中自動創建數據庫
任何想法如何做到這一點?
當用戶使用Windows身份驗證登錄到SQL Server時,需要自動創建數據庫(並創建表等)。如果用戶名是smith
,則會創建一個名爲smith
的新數據庫,並且用戶將擁有對該數據庫的完全訪問權限。用戶登錄時在SQL Server中自動創建數據庫
任何想法如何做到這一點?
第一個問題就是爲什麼你想在每次有人登錄時創建一個新的數據庫。爲什麼不重用現有的數據庫?如果有人登錄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'
做些力所能及,但它是寫一個顯著的努力,測試,調試並確保它是既安全又安全。 – RBarryYoung
這是一個非常糟糕的主意。您是否考慮在現有數據庫中創建模式?如果兩個史密斯登錄會怎麼樣? –
感謝您的意見。我找到了解決方案 - 有一個登錄觸發器。所以我可以創建數據庫並在觸發器中加載數據。 – user3019981