2011-02-08 45 views
0

在使用數據庫項目(VS 2010)時,部署數據庫VSDBCMD或SQLCMD更好。除了默認變量(databasename,datapath和logpath)之外是否還有其他主要缺陷?VSDBCMD與SQLCMD

回答

6

vsdbcmd是一個diff工具:它可以分析.dbschema,它與目標數據庫比較,並通過有選擇地添加,刪除和修改現有的對象帶來目標DB達在.dbschema文件的架構。 sqlcmd只是一個執行工具,它需要一個.sql腳本並盲目運行它。所以它真的適用於橙子,這兩種工具在目的和功能上有很大不同。

+0

用於部署目的,即運行腳本 - 如果我不使用.dbschema並使用生成的部署文件(.sql),哪一個更可取? –

0

你的問題不是很清楚,所以給你一個很好的答案並不容易,但根據你對Remus的回答的評論,我假設你正在嘗試執行vsdbcmd.exe生成的.sql腳本。如果我的假設是正確的,則需要使用sqlcmd.exe來執行此腳本。

根據this thread on MSDN Forums,VSDB團隊不希望在sqlcmd.exe中已存在的vsdbcmd.exe中複製功能。

+0

我應該補充說,我鏈接的線程開始變老(從2008年開始),所以事情可能從那時起就發生了變化。 –

+0

是的,你是對的。我試圖通過各種選項使用VSDBCMD,使用VSDBCMD生成可部署文件然後在不同環境中使用SQLCMD進行部署似乎更容易。感謝msdn鏈接。 –

+1

這裏存在的危險是,並非所有的目標數據庫都可能是相同的,因此他們需要應用不同的腳本來將它們提交到目標模式。如果你的所有環境都保證始終處於同一個模式,那麼執行diff然後展開結果是可以的,但仍然是危險的。 –