检查特定用户的数据库权限
本文关键字:数据库 权限 用户 检查 | 更新日期: 2023-09-27 18:25:32
我连接到另一家公司拥有的数据库。他们给我的用户有限制的特权,我只能对某些视图进行选择查询。
我遇到了一个小问题,因为另一家公司不那么合作。他们在不告诉我的情况下更改我的用户密码,或者更改视图的名称。由于有40多个视图,我想制作一个自动系统,检查是否一切正常。
我的问题是,我可以对视图和数据库进行什么样的检查?仅仅尝试打开连接并对每个视图进行select*查询就足够了吗?
顺便说一句,数据库是SQLServer2008R2,我使用C#。
这里有一个检查所有必需视图是否存在的函数:
bool IsAllviewsExists()
{
string DatabaseName= "Your_DB_NAME";
string[] viewsInDB = GetAllViewsNamesInDB();
for (int i = 0; i < viewsInDB.Length; ++i)
{
using (SqlCommand cmd = CreateSqlCommand(String.Format("SELECT id FROM sysobjects WHERE ID = OBJECT_ID('{0}.dbo.{1}') AND (type = 'V')", DatabaseName,viewsInDB [i])))
{
using (DataTable objects = ExecuteDataTableQuery(cmd))
{
if (objects.Rows.Count == 0)
{
return false;
}
}
}
}
return true;
}
从IsAllviewsExists
调用的函数:(请注意,他们假设您有一个名为_conn
的连接的数据成员)
SqlCommand CreateSqlCommand(string sql, SqlParameterCollection parameters)
{
SqlCommand cmd = _conn.CreateCommand();
cmd.Connection = _conn;
cmd.CommandText = sql;
if (parameters != null)
foreach (SqlParameter param in parameters)
cmd.Parameters.Add(param);
return cmd;
}
DataTable ExecuteDataTableQuery(SqlCommand cmd)
{
DataTable table = null;
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
table = new DataTable();
try
{
adapter.Fill(table);
}
catch (SqlException sqlEx)
{
rethrow;
}
}
return table;
}