Applies to:
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
SQL Server 2022 Analysis Services (SSAS) CU1 及更高版本包括对模型数据库架构的某些写入作的增强加密。 从早期 SSAS 版本升级时,必须更新模型数据库以使用最新的加密。 如果未升级加密,某些数据库架构的写操作将被阻止。 例如,不能添加新数据源或更改连接字符串。
Caution
在早期版本的 SQL Server Analysis Services 上无法加载具有增强加密的新或升级的 Analysis Services 数据库。
升级表格模型数据库
对于 1600 及更高兼容级别的表格模型数据库,在某些架构写入操作期间可能会返回以下错误:
“新的表格数据库 '%{DatabaseName/}' 未使用最新的加密架构。请使用 EnsureProperEncryption 选项(或从具有相同选项的备份文件还原 DB)运行 RemoveDiscontinuedFeatured 命令以升级到最新加密。
To upgrade encryption, either back up the database and then restore with the EnsureProperEncryption option enabled by running the following XMLA command in SQL Server Management Studio:
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" Transaction="false" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl100="http://schemas.microsoft.com/analysisservices/2008/engine/100">
<Restore xmlns="http://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl922="http://schemas.microsoft.com/analysisservices/2022/engine/922">
<File>your_backup_file_pathname</File>
<AllowOverwrite>true</AllowOverwrite>
<ddl922:EnsureProperEncryption>true</ddl922:EnsureProperEncryption>
</Restore>
</Batch>
或者,如果数据库已加载,请在 SQL Server Management Studio 中运行以下 XML for Analysis (XMLA) 命令:
<RemoveDiscontinuedFeatures xmlns='http://schemas.microsoft.com/analysisservices/2003/engine' xmlns:ddl922='http://schemas.microsoft.com/analysisservices/2022/engine/922'>
<DatabaseID>DatabaseName</DatabaseID>
<ddl922:EnsureProperEncryption>true</ddl922:EnsureProperEncryption>
</RemoveDiscontinuedFeatures>
升级多维模型数据库
对于所有兼容级别的多维模型数据库,在某些架构写入操作期间可能会返回以下错误:
“多维数据库 '%{DatabaseName/}' 未使用最新的加密架构。请使用 EnsureProperEncryption 选项从备份文件创建备份文件和还原 DB,以升级到最新的加密。
To upgrade encryption, back up the database and then restore with the EnsureProperEncryption option enabled.
或者,如果数据库已加载,请在 SQL Server Management Studio 中运行以下 XMLA 命令:
<RemoveDiscontinuedFeatures xmlns='http://schemas.microsoft.com/analysisservices/2003/engine' xmlns:ddl922='http://schemas.microsoft.com/analysisservices/2022/engine/922'>
<DatabaseID>DatabaseName</DatabaseID>
<ddl922:EnsureProperEncryption>true</ddl922:EnsureProperEncryption>
</RemoveDiscontinuedFeatures>
密钥生命周期管理
SQL Server Analysis Services 使用数据库加密密钥对每个数据库(例如数据源凭据和连接字符串)的敏感数据进行加密。 在 SSAS 2025 及更高版本中,可以使用DBSCHEMA_CATALOGS架构行集来确定模型数据库的加密级别以及数据库密钥的年龄。 检查 ENCRYPTION_LEVEL 列并验证级别是否为 Analysis Services 2022 CU。 检查CRYPTOKEY_UPDATED列,了解数据库加密密钥的创建日期或上次重新生成日期。
可以使用 RemoveDiscontinuedFeatures 命令重新生成数据库加密密钥。 与从前面所述的旧加密升级一样,RemoveDiscontinuedFeatures 命令解密安全数据,生成新的数据库加密密钥,然后使用新的数据库加密密钥重新加密安全数据。
<RemoveDiscontinuedFeatures xmlns='http://schemas.microsoft.com/analysisservices/2003/engine' xmlns:ddl922='http://schemas.microsoft.com/analysisservices/2022/engine/922'>
<DatabaseID>DatabaseName</DatabaseID>
<ddl922:EnsureProperEncryption>true</ddl922:EnsureProperEncryption>
</RemoveDiscontinuedFeatures>
服务帐户更改过程
SQL Server Analysis Services 使用服务器范围的加密密钥来加密每个数据库加密密钥。 SSAS 2022 CU1 及更高版本中的增强加密随后使用数据保护 API (DPAPI) 通过当前服务帐户和本地计算机帐户中的信息安全地保护和访问服务器加密密钥。 只能在本地计算机上使用相同的服务帐户解密服务器加密密钥。 由于依赖于当前服务帐户,请确保遵循以下过程来更改 SQL Server Analysis Services 服务帐户。
更改多维实例的服务帐户
如果必须更改在多维模式下运行的服务器实例的服务帐户,则必须备份模型数据库、卸载并重新安装服务器,然后还原模型数据库。 此方法可确保所有安全对象都经过正确加密,包括 QueryLogConnectionString 和 ImpersonationAccount 凭据。 Alternatively, you can also use an attach/detach approach, but this approach requires you to preserve the existing data folder.
使用 SSMS 将每个数据库备份到 .abf 文件中。
卸载 SSAS 服务器实例。
删除卸载的服务器实例的任何剩余内容,例如剩余的数据文件夹或配置文件。
安装新的 SSAS 服务器实例并分配新的服务帐户。
从备份 .abf 文件还原数据库。
实施这些步骤以避免数据丢失或安全漏洞时要小心。 在对服务帐户或服务器配置进行重大更改之前,请始终执行数据备份并从系统管理员处寻求指导。
更改 Tabular 实例的服务帐户
表格服务器实例不需要完整的服务器重新安装,因为表格服务器不使用服务器范围的 QueryLogConnectionString 或 ImpersonationAccount 凭据。 尽管该过程不依赖于数据库备份,但在对服务帐户或服务器配置做出重大更改之前,应始终执行数据备份,并从系统管理员处寻求指导。
建议但可选,请使用 SSMS 将每个数据库备份到 .abf 文件中。
分离所有模型数据库。
停止 SSAS 服务。
删除 Data 文件夹中除 Administrators.xml 和 master.vmp 文件之外的所有文件,删除 msmdsrv.ini中的查询日志连接字符串和模拟密码,并保留数据库目录。
更改 SSAS 服务帐户。
启动 SSAS 服务。
重新附加所有模型数据库。
将模型数据库移动到其他服务器实例
如果必须在服务器之间传输模型数据库,则必须使用备份/还原或分离/附加方法。 有关使用 SSMS、AMO 或 XMLA 进行分离/附加方法的详细信息,请参阅移动 Analysis Services 数据库。
故障转移群集支持
可以将具有增强加密的 SQL Server 2025 Analysis Services 安装到 Windows Server 故障转移群集(WSFC)中,以实现高可用性。 在 WSFC 环境中,所有服务器实例都必须使用与服务帐户相同的 Active Directory 域用户帐户,以便可以在所有服务器实例上解密服务器加密密钥。 不支持本地 Windows 帐户、Build-In 帐户和 Entra ID 帐户。
Note
具有增强加密的 SQL Server 2022 Analysis Services CU1 不提供故障转移群集支持。 要从故障转移群集环境中的增强加密中受益,必须升级到 SQL Server 2025 Analysis Services。
Troubleshooting
Problem: If the backup/restore steps above aren't followed, changing SQL Server 2022 Analysis Services service account can cause the service to fail to start.
Log\msmdsrv.log 文件中的以下消息指示服务无法启动,因为服务帐户已更改:
“服务器 Gen2 加密密钥不存在,但服务器程序集对象系统设置为使用服务器 gen2 cryptokey。终止服务器。(来源:\?\C:\Program Files\Microsoft SQL Server\MSAS16。MSSQLSERVER\OLAP\Log\msmdsrv.log,类型:1,类别:289,事件 ID: 0x4121005C”
Solution: In the msmdsrv.ini file, in ConfigurationSettings>DataDir, determine the location of the Data folder. Then in the Data folder, delete the files with the name containing .asm.xml, and all folders with an .asm extension.
删除文件后,重启 Analysis Services 服务。 .asm 文件将再次自动创建。
然后,必须使用 SQL Server Management Studio 配置以下加密属性(SSMS):
- Log\QueryLog\QueryLogConnectionString.
- 每个数据源的 ImpersonationAccount 密码或身份验证密码。