MSSQL為單獨數據庫創建登錄賬戶


如果要為一個數據庫創建一個獨立的賬號需要這個數據庫為包含數據庫

    • 當前(非包含)的數據庫所面臨的問題
      在描述什么是包含數據庫之前,先了解一下為什么會出現包含數據庫。當前的數據庫有一些問題,如下:
      1、在數據庫遷移或部署的過程中一些信息會丟失
           當我們將數據庫從一個SQL Server實例遷移到另一個實例是,諸如登陸、工作代理等信息將不能一起被遷移。因為這些信息有特殊用途,自創建后就常駐SQL Server實例。在新的SQL Server實例上重新創建這些任務將是一個耗時、易出錯的過程。
      2、從應用開發轉向部署
           在Server上部署應用時或許會遇到一些障礙,因為很有可能環境不匹配。例如,創建login時可能沒權限,命令行實用工具(如“xp_cmdshell”)或許是禁用的,應用里用到的數據庫排序規則或許和Server初始指定的(也可能是默認的)排序規則不同。
      3、應用管理的安全考量
           管理和維護單個數據庫比較困難,因為login、job agent等信息是跨數據庫實例訪問的,因此,允許用戶對整個實例授權將引起對其他數據庫的不必要訪問,進而導致安全隱患。
    • 什么是包含的數據庫
      義如其名,它是一種自我包含的數據庫。例如,它自帶所有創建數據庫時所需要的數據庫設置及元數據信息。它獨立於SQL Server實例,沒有外部依賴關系,自帶授權用戶的自我包含機制。由於它獨立於數據庫實例,就使得在部署到不同服務器時數據庫的排序規則不再是一個問題。
      一個包含的數據庫,保留了所有數據庫里必要信息和對象,如表、函數、限制、架構、類型等。它也存有所有數據庫里的應用級對象,如登陸、代理作業、系統設置、鏈接服務器信息等。
      這種數據庫帶給我們的好處是,可以輕松地從一台Server搬移到另一台,並且不需要做任何額外配置就可以立即使用它,因為他們沒有任何外部的依賴。

創建包含數據庫

方法1: 使用 Management Studio 啟用包含的數據庫
1.在對象資源管理器中,右擊服務器名稱,然后單擊“屬性”

2.在“高級”頁面上的“包含”部分中,將“啟用包含的數據庫”選項設置為“True”(默認為“False”)

3.單擊“確定”。

方法2: 使用T-SQL啟用包含的數據庫

--Enabled Advanced options
sp_configure 'show advanced', 1;
RECONFIGURE WITH OVERRIDE;
go
--Enabled Database Containment
sp_configure 'contained database authentication', 1;
RECONFIGURE WITH OVERRIDE;
go

將一個非包含數據庫轉為包含數據庫

1、右擊該數據庫並單擊其屬性

2. 在“選項”一欄,將包含類型選擇為“部分”,最后單擊“確認”。

這種方法有時候無法完成轉換,那么可以試試使用sql來進行轉換

USE [master]
GO
ALTER DATABASE TestNonContainedDB SET CONTAINMENT = PARTIAL
GO

  將數據庫轉為包含數據庫后才可以創建賬戶和密碼

USE DBName
GO

 
CREATE USER [username]      WITH PASSWORD=N'password',  DEFAULT_SCHEMA=[dbo]
GO

創建完畢后就可以使用這個賬戶鏈接數據庫了,而且當遷移數據庫后這個賬戶也會被跟着遷移走

 引文:https://blog.csdn.net/burgess_liu/article/details/7477470


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM