【发布时间】:2016-08-28 10:23:15
【问题描述】:
我正在使用 c# 代码生成 sql 数据库脚本。
以下代码适用于 create table,但当我尝试使用 scriptOptions.ScriptData = true; 时,它会引发以下异常。
未处理的类型异常 'Microsoft.SqlServer.Management.Smo.FailedOperationException' 发生 在 Microsoft.SqlServer.Smo.dll 中
附加信息:此方法不支持脚本数据。
代码
public static string ScriptDatabase(string dbConnectionString, string databaseName)
{
SqlConnection conn = new SqlConnection(dbConnectionString);
ServerConnection serverConn = new ServerConnection(conn);
var server = new Server(serverConn);
var database = server.Databases[databaseName];
var scripter = new Scripter(server);
// I tried this code also
// scripter.Options.ScriptData = true;
ScriptingOptions scriptOptions = new ScriptingOptions();
scriptOptions.ScriptDrops = false;
scriptOptions.ScriptData = true;
scriptOptions.ScriptSchema = true;
scriptOptions.IncludeIfNotExists = true;
string scrs = "";
string tbScr = "";
foreach (Table myTable in database.Tables)
{
/* Generating IF EXISTS and DROP command for tables */
StringCollection tableScripts = myTable.Script(scriptOptions);
foreach (string script in tableScripts)
scrs += script + "\n\n";
/* Generating CREATE TABLE command */
tableScripts = myTable.Script();
foreach (string script in tableScripts)
tbScr += script + "\n\n";
}
return (scrs + "\n\n" + tbScr);
}
【问题讨论】:
-
在每个单独的表上尝试
Scripter.EnumScript(database.Tables)而不是Table.Script()。 (免责声明:未经测试。) -
@JeroenMostert 不适合我可能是我使用错误,你能帮我写代码吗.. 谢谢
标签: c# sql sql-server sql-server-2008 smo