1

У меня есть консольное приложение C# 4.0 и база данных SQL Server 2008, работающая на сервере базы данных.Как я могу получить свойства базы данных SQL Server из кода C#?

Кто-нибудь знает, есть ли способ получить свойства базы данных (например, «База данных только для чтения») из кода 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

Я наконец использовал MetaData подход, но изменил SqlCommand строки: "SqlCommand CMD = новое SqlCommand (" SELECT DATABASEPROPERTYEX ('DatabaseNameHere', 'Updateability') ", myConnection); и он отлично работает. Спасибо за ваш вклад. – G21