Sto generando script di database sql utilizzando il codice C#.ScriptingOptions sql smo non supporta i dati di scripting
il seguente codice funziona correttamente per create table
ma quando provo a utilizzare scriptOptions.ScriptData = true;
viene generata in seguito all'eccezione.
un'eccezione non gestita di tipo 'Microsoft.SqlServer.Management.Smo.FailedOperationException' verificato in Microsoft.SqlServer.Smo.dll
Ulteriori informazioni: Questo metodo non supporta i dati di scripting.
codice
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);
}
Provare 'Scripter.EnumScript (database.Tables)' piuttosto che 'Table.Script()' su ogni singola tabella. (Disclaimer: non testato.) –
@JeroenMostert non funziona per me potrebbe essere che sto usando male, puoi aiutarmi nel mio codice .. grazie – Neo