gpt4 book ai didi

c# - 执行前检查用户是否有更新/选择/插入权限

转载 作者:行者123 更新时间:2023-12-05 08:57:45 25 4
gpt4 key购买 nike

我正在构建一个在 SQL Server 上使用集成安全性的 winforms 应用程序。现在,我执行以下操作以确保通知用户他/她无权访问特定架构(每个人都有选择权限,但很少有人有更新和插入权限)。

 try
{
string sqlx = "select * from test.t";
SqlCommand comm = new SqlCommand(sqlx, conn);


conn.Open();
comm.ExecuteNonQuery();
conn.Close();
return;
}
catch (SqlException ex)
{
if (ex.Number == 229 | ex.Number == 230)
System.Windows.Forms.MessageBox.Show("You do not have permission to update this table. Please contact your system admin for permission.");
else
System.Windows.Forms.MessageBox.Show(ex.Message);
}

catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.Message);

}
finally
{
conn.Close();
}

例如,有没有一种方法可以从 C# 中“预筛选”用户权限,而不是让用户甚至可以单击删除按钮?

最佳答案

试试这个:

SELECT * FROM fn_my_permissions('dbo', 'SCHEMA')

它将针对已连接用户的“dbo”架构返回权限列表:

entity_name subentity_name  permission_name
dbo NULL SELECT
dbo NULL INSERT
dbo NULL UPDATE
dbo NULL DELETE
dbo NULL REFERENCES
dbo NULL EXECUTE
dbo NULL VIEW CHANGE TRACKING
dbo NULL VIEW DEFINITION
dbo NULL ALTER
dbo NULL TAKE OWNERSHIP
dbo NULL CONTROL

因此您可以根据需要查找 INSERT 或 UPDATE:

if exists (SELECT * FROM fn_my_permissions('dbo', 'SCHEMA') where permission_name = 'INSERT')
begin
select 'Yes'
end
else
begin
select 'No'
end

关于c# - 执行前检查用户是否有更新/选择/插入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29612652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com