使用加密

在 SMO 中,服务主密钥由 ServiceMasterKey 对象表示。 该属性由 ServiceMasterKey 对象的属性 Server 引用。 可以使用该方法重新 Regenerate 生成它。

数据库主密钥由 MasterKey 对象表示。 该 IsEncryptedByServer 属性指示数据库主密钥是否由服务主密钥加密。 每当更改数据库主密钥时,master 数据库中的加密副本都会自动更新。

可以使用该方法删除服务密钥加密 DropServiceKeyEncryption ,并使用密码加密数据库主密钥。 在这种情况下,在访问已保护的私钥之前,必须显式打开数据库主密钥。

将数据库附加到 SQL Server 实例时,必须提供数据库主密钥的密码,或执行 AddServiceKeyEncryption 该方法,使数据库主密钥的未加密副本可用于使用服务主密钥进行加密。 建议执行此步骤,避免需要显式打开数据库主密钥。

该方法 Regenerate 重新生成数据库主密钥。 重新生成数据库主密钥时,解密使用数据库主密钥加密的所有密钥,然后使用新的数据库主密钥对其进行加密。 该方法 DropServiceKeyEncryption 通过服务主密钥删除数据库主密钥的加密。 AddServiceKeyEncryption 使主密钥的副本使用服务主密钥进行加密,并存储在当前数据库和 master 数据库中。

在 SMO 中,证书由 Certificate 对象表示。 该 Certificate 对象具有指定公钥、使用者名称、有效期和有关颁发者的信息的属性。 使用和Deny方法控制GrantRevoke访问证书的权限。

示例:

对于以下代码示例,必须选择编程环境、编程模板和编程语言来创建应用程序。 有关详细信息,请参阅 在 Visual Studio .NET 中创建 Visual Basic SMO 项目 ,并在 Visual Studio .NET 中创建 Visual C# SMO 项目

在 Visual Basic 中添加证书

该代码示例使用加密密码创建一个简单的证书。 与其他对象不同,该方法 Create 具有多个重载。 示例中使用的重载使用加密密码创建新证书。

在 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")

另请参阅

使用加密密钥