我的應用程序用於複製表database
中的表並將它們複製到另一個表中,我使用的是smo
和c#
。我的代碼:當使用DateTime創建表時,NullReferenceExeption列(SMO,C#)
private static void createTable(Table sourcetable, string schema, Server destinationServer,
Database db)
{
Table copiedtable = new Table(db, sourcetable.Name, schema);
createColumns(sourcetable, copiedtable);
copiedtable.AnsiNullsStatus = sourcetable.AnsiNullsStatus;
copiedtable.QuotedIdentifierStatus = sourcetable.QuotedIdentifierStatus;
copiedtable.TextFileGroup = sourcetable.TextFileGroup;
copiedtable.FileGroup = sourcetable.FileGroup;
copiedtable.Create();
}
private static void createColumns(Table sourcetable, Table copiedtable)
{
foreach (Column source in sourcetable.Columns)
{
Column column = new Column(copiedtable, source.Name, source.DataType);
column.Collation = source.Collation;
column.Nullable = source.Nullable;
column.Computed = source.Computed;
column.ComputedText = source.ComputedText;
column.Default = source.Default;
if (source.DefaultConstraint != null)
{
string tabname = copiedtable.Name;
string constrname = source.DefaultConstraint.Name;
column.AddDefaultConstraint(tabname + "_" + constrname);
column.DefaultConstraint.Text = source.DefaultConstraint.Text;
}
column.IsPersisted = source.IsPersisted;
column.DefaultSchema = source.DefaultSchema;
column.RowGuidCol = source.RowGuidCol;
if (server.VersionMajor >= 10)
{
column.IsFileStream = source.IsFileStream;
column.IsSparse = source.IsSparse;
column.IsColumnSet = source.IsColumnSet;
}
copiedtable.Columns.Add(column);
}
}
項目非常順利地使用北風database
的作品,但是,從AdventureWorks2014 database
一些表我得到在copiedtable.Create();
以下內部異常:
的NullReferenceException:未將對象引用設置爲一個對象的實例。
我猜想,那AdventureWorks的datetime
列可能是造成問題的原因(數據輸入,如:2008-04-30 00:00:00.000)
的可能的複製(https://stackoverflow.com/問題/ 4660142 /什麼 - 是 - 一 - 的NullReferenceException和知識-DO-I-FIX-IT) –