我将使用我的完整表名,因为我试图查明为什么找不到该表的原因。
我正在尝试截断C#中的表。我能够在SQL Server中运行此命令"TRUNCATE TABLE NS_Vendor"
,它可以正确找到并截断该表。
如果我尝试在C#应用程序中执行此操作,则会被告知不存在或没有权限。我正在使用数据库管理员帐户,因此无法获得权限。我正在使用下面的代码。我在具有管理员用户凭据的名为Public的数据库中,并且正在寻找截断"NS_Vendor"
表的方法。下面的cmd在SQL Server中有效。我尝试了其他类型的字符串,例如"dbo.NS_Vendor"
,但没有一个起作用。
有人介意向我指出我对自己做错的事情不了解吗?
SqlConnection sqlConnection = new SqlConnection("Server = server; Database = Public; User = ; Password = ;");
string query = "TRUNCATE TABLE " + "NS_Vendor";
SqlCommand cmd = new SqlCommand(query, sqlConnection);
sqlConnection.Open();
cmd.ExecuteNonQuery();
sqlConnection.Close();
答案 0 :(得分:1)
要解决此问题,我建议您做几件事。首先尝试一下:
string query = "DELETE NS_Vendor";
...
cmd.ExecuteNonQuery();
如果仍然出现类似错误,那么我认为您正在与其他数据库进行交互。但是,如果没有错误,则可以确保您提供的用户没有TRUNCATE
您可以在TRUNCATE TABLE
上获得一些有用的信息here,它表示
所需的最低权限为table_name的ALTER。默认情况下,表所有者,sysadmin固定服务器角色的成员以及db_owner和db_ddladmin固定数据库角色的TRUNCATE TABLE权限是不可转让的。但是,您可以将TRUNCATE TABLE语句合并到模块(例如存储过程)中,并使用EXECUTE AS子句为模块授予适当的权限。