1

我已经在数据库服务器上启动并运行了C#4.0控制台应用程序和SQL Server 2008数据库。如何从C#代码获取SQL Server数据库属性?

有人知道是否有办法从C#代码中获取数据库属性(如“数据库只读”)?

我的猜测是应该的,但我无法找到准确的解决方案。

在此先感谢

回答

1

至少有两种方法可以做到这一点。一种是在另一种情况下使用Database Metadata tables另一种使用SQL Management objects这里有很多数据,所以你真的需要知道你想要什么。例如,您将如何获得您所提及的“数据库只读”属性。

使用一个SqlCommand对元数据

using (SqlConnection cnn = new SqlConnection("Data Source=.;Initial Catalog=master;Integrated Security=SSPI;")) 
{ 
    SqlCommand cmd = new SqlCommand("SELECT is_read_only FROM sys.filegroups",cnn); 
    cnn.Open(); 
    var isReadOnly = cmd.ExecuteScalar(); 
    Console.WriteLine(isReadOnly); 
} 

使用SMO

using System; 
using Microsoft.SqlServer.Management.Smo; 

namespace SMO_Test 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Server srv = new Server(); //Connection to the local SQL Server 

      Database db = srv.Databases["master"]; 
      foreach (FileGroup fg in db.FileGroups) 
      { 
       Console.WriteLine(fg.ReadOnly); 

      } 

     } 
    } 
} 
+0

我最后使用的元数据的方法,但改变的SqlCommand行: “的SqlCommand CMD =新的SqlCommand(” SELECT DATABASEPROPERTYEX('DatabaseNameHere','Updateability')“,myConnection);”它完美的工作。感谢您的贡献。 – G21 2012-03-07 19:13:35

相关问题