共用方式為


使用加密

在 SMO 中,服務主要金鑰是由 ServiceMasterKey 物件表示, 這可藉由 Server 物件的 ServiceMasterKey 屬性加以參考, 並使用 Regenerate 方法來重新產生。

資料庫主要金鑰是由 MasterKey 物件表示。 IsEncryptedByServer 屬性會指出是否利用服務主要金鑰來加密資料庫主要金鑰。 每當資料庫主要金鑰變更時,master 資料庫中的加密副本就會自動更新。

您可以使用 DropServiceKeyEncryption 方法來卸除服務金鑰加密,然後使用密碼對資料庫主要金鑰進行加密。 在該種情況下,您必須明確地開啟資料庫主要金鑰,才能存取該金鑰所保護的私密金鑰。

將資料庫附加到 SQL Server 的執行個體時,您必須為資料庫主要金鑰提供密碼,或執行 AddServiceKeyEncryption 方法,讓資料庫主要金鑰的未加密副本可以使用服務主要金鑰進行加密。 建議使用此步驟,如此即不必明確地開啟資料庫主要金鑰。

Regenerate 方法會重新產生資料庫主要金鑰。 當重新產生資料庫主要金鑰時,所有利用資料庫主要金鑰加密的金鑰都會解密,然後再利用新的資料庫主要金鑰來加密。 DropServiceKeyEncryption 方法會利用服務主要金鑰移除資料庫主要金鑰的加密。 AddServiceKeyEncryption 會導致主要金鑰的副本使用服務主要金鑰加密,然後同時儲存在目前的資料庫和 master 資料庫中。

在 SMO 中,憑證是由 Certificate 物件所表示。 Certificate 物件的屬性可指定公開金鑰、主旨的名稱、有效期間和簽發者的相關資訊。 存取此憑證的權限是藉由使用 Grant、Revoke 和 Deny 方法來控制。

範例

在下列的程式碼範例中,您必須選取用於建立應用程式的程式設計環境、程式設計範本和程式設計語言。 如需詳細資訊,請參閱<在 Visual Studio .NET 中建立 Visual Basic SMO 專案>和<在 Visual Studio .NET 中建立 Visual C# SMO 專案>。

在 Visual Basic 中加入憑證

此程式碼範例會使用加密密碼來建立簡單的憑證。 不同於其他物件,Create 方法有數個多載。 範例中使用的多載會利用加密密碼來建立新的憑證。

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2012 database.
Dim db As Database
db = srv.Databases("AdventureWorks2012")
'Define a Certificate object variable by supplying the parent database and name in the constructor.
Dim c As Certificate
c = New Certificate(db, "Test_Certificate")
'Set the start date, expiry date, and description.
c.StartDate = DateValue("January 01, 2007")
c.Subject = "This is a test certificate."
c.ExpirationDate = DateValue("January 01, 2008")
'Create the certificate on the instance of SQL Server by supplying the certificate password argument.
c.Create("pGFD4bb925DGvbd2439587y")

在 Visual C# 中加入憑證

此程式碼範例會使用加密密碼來建立簡單的憑證。 不同於其他物件,Create 方法有數個多載。 範例中使用的多載會利用加密密碼來建立新的憑證。

{
            //Connect to the local, default instance of SQL Server. 
            {
                Server srv = new Server();

                //Reference the AdventureWorks2012 database. 
                Database db = srv.Databases["AdventureWorks2012"];

                //Define a Certificate object variable by supplying the parent database and name in the constructor. 
                Certificate c = new Certificate(db, "Test_Certificate");

                //Set the start date, expiry date, and description. 
                System.DateTime dt;
                DateTime.TryParse("January 01, 2010", out dt);
                c.StartDate = dt;
                DateTime.TryParse("January 01, 2015", out dt);
                c.ExpirationDate = dt;
                c.Subject = "This is a test certificate.";
                //Create the certificate on the instance of SQL Server by supplying the certificate password argument. 
                c.Create("pGFD4bb925DGvbd2439587y");
            }
        } 

在 PowerShell 中加入憑證

此程式碼範例會使用加密密碼來建立簡單的憑證。 不同於其他物件,Create 方法有數個多載。 範例中使用的多載會利用加密密碼來建立新的憑證。

# Set the path context to the local, default instance of SQL Server and get a reference to AdventureWorks2012
CD \sql\localhost\default\databases
$db = get-item AdventureWorks2012

#Create a certificate

$c = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Certificate -argumentlist $db, "Test_Certificate"
$c.StartDate = "January 01, 2010"
$c.Subject = "This is a test certificate."
$c.ExpirationDate = "January 01, 2015"

#Create the certificate on the instance of SQL Server by supplying the certificate password argument.
$c.Create("pGFD4bb925DGvbd2439587y")
 

請參閱

概念

使用加密