我有一个正确执行的UPDATE语句。为了清理代码,我在Azure SQL数据库中创建了一个存储过程来代替更新。但是,存储过程似乎没有执行。我的代码如下。是否有Azure限制我不知道?我忽略了什么吗? SP不会返回任何值。
using (SqlConnection VDCRootConn = new SqlConnection(VDCRootConnectionString))
{
VDCRootConn.Open();
SqlCommand VDCRootSqlStatement = new SqlCommand("csp_update_table_sync_ledger", VDCRootConn);
VDCRootSqlStatement.CommandType = CommandType.StoredProcedure;
VDCRootSqlStatement.Parameters.Add(new SqlParameter("@sourceDbName", sourceDbName));
VDCRootSqlStatement.Parameters.Add(new SqlParameter("@sourceDbTablename", sourceDbTablename));
VDCRootSqlStatement.Parameters.Add(new SqlParameter("@sourceTableMaxSyncedRecordId", sourceTableMaxSyncedRecordId));
VDCRootSqlStatement.Parameters.Add(new SqlParameter("@clientId", clientId));
VDCRootSqlStatement.Parameters.Add(new SqlParameter("@sourceTablePrimaryKeyName", sourceTablePrimaryKeyName));
VDCRootSqlStatement.ExecuteNonQuery();
VDCRootConn.Close();
}
更新:似乎这是AZURE SQL权限问题。我仔细检查了我的凭据和权限。只是为了分享我的思想流程..
1)我可以从SQL Manager
执行SP2)我可以验证我有权执行'MyLoginName'
SELECT HAS_PERMS_BY_NAME('dbo.csp_update_table_sync_ledger', 'OBJECT', 'EXECUTE');