簡體   English   中英

如何在C#中以編程方式創建SQL Server數據庫

[英]How to create a SQL Server database programmatically in C#

我想創建一個程序,它將使用SQL Server 2008數據庫。 在第一次啟動時,我想打開一個窗口,讓用戶創建一個數據庫。 它將是簡單的文本框,其中包含數據庫計算機的名稱和IP以及按鈕“Go”。

程序將在WPF .NET4中。 數據庫將在本地網絡中。

你能給我一個很好的解決方案嗎? 這樣做是一種很好的編程習慣嗎? 或許我應該只附加一個sql腳本?

我做了一些研究,我發現那篇文章: http//www.codeproject.com/KB/tips/CreateSQLDV.aspx

但是,第一個問題,在SQL Server 2008中,沒有Microsoft.SqlServer.SmoEnum.dll 所以,當我做類似的“數據創建”窗口,但對於SQL Server 2008(使用可能不同的dll) - 它將無法用於SQL Server 2005.並且可能無法與其他版本的SQL Server 2008一起使用? 我不知道.. codeproject的例子看起來不錯,但我不確定。

我想做一個靈活的計划。

我建議不要以編程方式實際創建數據庫。 正如你所提到的 - 使用不同版本的SMO,這變得有點噩夢。

我的方法是:

  • 在您的安裝中,發送一個“默認”空數據庫,它具有您的基本結構(所有表和所有內容),還可能包含某些表中的一些基本查找數據

  • 當用戶指示他沒有適用於您的應用程序的現有數據庫時,將MDF / LDF /和可能的NDF文件復制到SQL Server數據位置

  • 以編程方式將這些數據庫文件附加到SQL Server實例

這似乎是一個更好的清潔和更靈活的方法。

數據庫創建可能不需要是代碼本身的一部分。 特別是,如果您只需要創建一次數據庫。 我建議使用Windows Installer或Inno Setup(我更喜歡Inno Setup)創建安裝程序的方法。 使用安裝程序,您可以提示用戶輸入其管理用戶的SQL服務器名稱和登錄憑據。 然后,您可以使用它們來運行包含CREATE DATABASE和CREATE TABLE語句的SQL腳本,等等。 希望這可以幫助。

我會避免SMO。

它取決於你的觀眾和你對預期環境的控制,但附加預制數據庫,雖然方便的選擇,有時可能會有問題 - 從源頭控制的二進制開始,所以你沒有得到您的源代碼管理系統中的免費差異。 此外,您附加的數據庫包含某些可能不適合特定目標環境的選項和內容 - SQL Server 2005,SQL Server 2008,SQL Server 2008 R2? 除此之外,它是一種有效的方法,類似於過去部署Access應用程序的方式。

在一個控制較少的環境中,我會生成一個包含所有DDL(和查找表的DML)的SQL腳本,或提供一個腳本,提供自動運行它,並讓他們自己使用自己的工具運行它(如果他們有DBA)。

現在,您的腳本(或至少是腳本的模板或生成腳本的代碼)受源代碼管理,可以滿足想要檢查它的DBA。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM