1

C# 4.0 コンソール アプリケーションと SQL Server 2008 データベースをデータベース サーバー上で稼働させています。

C# コードからデータベース プロパティ (「Database Read-Only」など) を取得する方法があるかどうか誰かが知っていますか?

そうあるべきだと思いますが、正確な解決策を見つけることができませんでした。

前もって感謝します

4

1 に答える 1

1

それには少なくとも2つの方法があります。1 つはデータベース メタデータ テーブルを使用する方法で、もう 1 つはSQL 管理オブジェクトを使用する方法です。どちらの場合も大量のデータが存在するため、必要なものを把握する必要があります。たとえば、これはあなたが言及した「データベース読み取り専用」プロパティを取得する方法です。

MetaData に対して 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);

            }

        }
    }
}
于 2012-03-07T16:11:28.270 に答える