如何从C#代码获取SQL Server数据库属性?
问题描述:
我已经在数据库服务器上启动并运行了C#4.0控制台应用程序和SQL Server 2008数据库。如何从C#代码获取SQL Server数据库属性?
有人知道是否有办法从C#代码中获取数据库属性(如“数据库只读”)?
我的猜测是应该的,但我无法找到准确的解决方案。
在此先感谢
答
至少有两种方法可以做到这一点。一种是在另一种情况下使用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);
}
}
}
}
我最后使用的元数据的方法,但改变的SqlCommand行: “的SqlCommand CMD =新的SqlCommand(” SELECT DATABASEPROPERTYEX('DatabaseNameHere','Updateability')“,myConnection);”它完美的工作。感谢您的贡献。 – G21 2012-03-07 19:13:35