如何使用VB.NET的SMO类将单个表传输到MSSQL服务器中的另一个数据库?

时间:2015-05-29 07:08:03

标签: sql sql-server database vb.net smo

我已经可以创建一个数据库但是当我使用下面的代码时,它会传输所有表而没有任何记录。另外,我如何编码只传输一个特定的表?

Shared Sub transferTables()
        Dim conn As New ServerConnection("NPSS-OJT", "sa", "rms")
        Dim srv As New Server(conn)
        Dim db As Database = srv.Databases("bos_primary_db")
        Dim dbCopy As Database = New Database(srv, Main.dbName)

        Dim xfr As Transfer
        xfr = New Transfer(db)
        xfr.CopyAllTables = False
        xfr.Options.WithDependencies = False
        xfr.Options.ContinueScriptingOnError = True
        xfr.DestinationDatabase = dbCopy.Name
        xfr.DestinationServer = srv.Name
        xfr.DestinationLoginSecure = True
        xfr.CopySchema = True
        xfr.CopyData = True
        xfr.Options.DriAll = False
        xfr.Options.DriDefaults = True
        xfr.Options.DriIndexes = True
        xfr.Options.DriPrimaryKey = True
        xfr.Options.DriUniqueKeys = True
        xfr.Options.DriForeignKeys = False
        xfr.ObjectList.Add("Accounting")
        xfr.TransferData()
    End Sub

更新代码:

<body>
<div id="nav"> 
<ul>
    <li><a href="homepage.html">Home</a></li>
    <li><a href="registration.php">Register</a></li>
    <li><a href="fflogin.php">Frequent Flyer Login</a></li>
    <li><a href="adminlogin.php">Admin Login</a></li>
    <li><a href="terms&con.html">Terms & Conditions</a></li>
</ul>

1 个答案:

答案 0 :(得分:2)

你应该设置

xfr.CopyAllTables = False
xfr.Options.WithDependencies = False

你也应该转移钥匙

xfr.Options.DriAll = False 
xfr.Options.DriDefaults = True
xfr.Options.DriIndexes = True
xfr.Options.DriPrimaryKey = True
xfr.Options.DriUniqueKeys = True
xfr.Options.DriForeignKeys = False

然后

编辑(我更改了转移对象列表中的表格添加)

xfr.ObjectList.Add(db.Tables("table_name"))
xfr.TransferData()

要在数据库之间传输指定的对象,您需要将此对象添加到ObjectList,而不仅仅是对象的名称。