一、MSSQL2000的master本身没有扩展存储过程xp_cmdshell,所以要创建一下,然后就看直接使用了:
sqlCommand.CommandText ="use master;"+
"if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xp_cmdshell]') and OBJECTPROPERTY(id, N'IsExtendedProc') = 1)" +
"exec sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'";
sqlCommand.ExecuteNonQuery();
二、MSSQL2005的master本身就有扩展存储过程xp_cmdshell,所以不用创建,但需要启用这个高级功能:
sqlCommand.CommandText = "EXEC sp_configure 'show advanced options', 1;/r/n" +
"RECONFIGURE /r/n" +
"EXEC sp_configure 'xp_cmdshell', 1; /r/n" +
"RECONFIGURE /r/n";
sqlCommand.ExecuteNonQuery();
这个是关闭:
sqlCommand.CommandText = "EXEC sp_configure 'show advanced options', 1;/r/n" +
"RECONFIGURE /r/n" +
"EXEC sp_configure 'xp_cmdshell', 0; /r/n" +
"RECONFIGURE /r/n";
sqlCommand.ExecuteNonQuery();
三、所以要判断MSSQL的版本:
sqlCommand.CommandText = "SELECT SERVERPROPERTY('productversion')";
string aa = sqlCommand.ExecuteScalar().ToString();
if (aa.Substring(0, 1) != "8")
{
//
}