如何找到当前版本的SQL Server数据层应用程序?

Mar*_*ark 11 sql-server-2008-r2 data-tier-applications

我们正在使用SQL Server数据层应用程序(dacpac或DAC包),我很难找到当前版本的数据库.

有没有办法使用以下任何方法获取当前版本:

  1. 从SQL Server Management Studio中
  2. 通过SQL语句
  3. 以编程方式使用.NET代码

Mar*_*ark 14

从SQL Server Management Studio中

来自http://msdn.microsoft.com/en-us/library/ee210574.aspx

要查看部署到数据库引擎实例的DAC的详细信息,请执行以下操作:

  1. 选择View/Object Explorer菜单.

  2. 对象资源管理器窗格连接到该实例.

  3. 选择View/Object Explorer Details菜单.

  4. 对象资源管理器中选择映射到该实例的服务器节点,然后导航到Management\Data-layers Applications节点.

  5. 详细信息页面顶部窗格中的列表视图列出了部署到数据库引擎实例的每个DAC.选择DAC以在页面底部的详细信息窗格中显示信息.

"数据层应用程序"节点的右键单击菜单还用于部署新DAC或删除现有DAC.

通过SQL语句

SELECT instance_name, type_version FROM msdb.dbo.sysdac_instances
Run Code Online (Sandbox Code Playgroud)

通过Azure上的SQL语句

SELECT instance_name, type_version FROM master.dbo.sysdac_instances
Run Code Online (Sandbox Code Playgroud)

以编程方式使用.NET代码

请注意,在DacFx 3.0中,这不再有效.请参阅我的其他答案,了解如何做到这一点.

C#

ServerConnection serverConnection;
string databaseName;

// Establish a connection to the SQL Server instance.
using (SqlConnection sqlConnection =
    new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
{
    serverConnection = new ServerConnection(sqlConnection);
    serverConnection.Connect();

    // Assumes default database in connection string is the database we are trying to query.
    databaseName = sqlConnection.Database;
}

// Get the DAC info.
DacStore dacstore = new DacStore(serverConnection);
var dacInstance = dacstore.DacInstances[databaseName];
System.Diagnostics.Debug.Print("Database {0} has Dac pack version {1}.", databaseName, dacInstance.Type.Version);
Run Code Online (Sandbox Code Playgroud)

VB.NET

Dim serverConnection As ServerConnection
Dim databaseName As String

' Establish a connection to the SQL Server instance.
Using sqlConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString)
    serverConnection = New ServerConnection(sqlConnection)
    serverConnection.Connect()

    ' Assumes default database in connection string is the database we are trying to query.
    databaseName = sqlConnection.Database
End Using

' Get the DAC info.
Dim dacstore As New DacStore(serverConnection)
Dim dacInstance = dacstore.DacInstances(databaseName)
System.Diagnostics.Debug.Print("Database {0} has Dac pack version {1}.", databaseName, dacInstance.Type.Version)
Run Code Online (Sandbox Code Playgroud)