我正在尝试在 c# 中以编程方式更改存储过程中的参数。我遇到了 SMO 并一直在尝试使用它,但更改一直失败。这是我的代码:
//alter parameter data type in stored procedure if parameter is not varchar
public static void AlterSPParamInfo (string SPName,string parameterName,string connectionStringName)
{
SqlConnection vSqlConnection = CreateSqlConnectionStr(connectionStringName);
using(vSqlConnection)
{
ServerConnection vConnection = new ServerConnection(vSqlConnection);
Server vServer = new Server(vConnection);
Database vDatabase = vServer.Databases["HrSys"];
var vTables = vDatabase.Tables;
StoredProcedure sp = vDatabase.StoredProcedures[SPName];
if(sp != null)
{
StoredProcedureParameter spParameter = sp.Parameters[parameterName];
if(spParameter!=null)
{
if(!spParameter.DataType.Equals(DataType.VarChar(50)))
{
spParameter.DataType = DataType.VarChar(50);
sp.QuotedIdentifierStatus = true;
try
{
sp.Refresh();
sp.Alter( );
}
catch(SqlServerManagementException ex)
{
//other code
}
}
}
}
我在这里想念什么?还是我不能以这种方式更改存储过程的参数?我尝试在 google 或MSDN上查找更多信息,但找不到任何解决方案...