2013-03-18 73 views
0

是否可以使用C#(不使用SMO或更改權限)以編程方式從SQL Server數據庫創建備份文件? SQL Server沒有權限在用戶文件夾中創建(寫入)*.bak文件,但程序可以執行此操作。所以我想創建一些查詢到數據庫,將給數據庫的轉儲,我可以寫入文件。SQL Server備份到C#文件

類似的東西:

SqlCommand sc = new SqlCommand(@"backup database test1 to stream", cnnct); 
SqlDataReader r = sc.ExecuteReader(); 
while(r.read())file.WriteLine(reader.GetString(0)); 
+0

http://sqldumper.ruizata.com/ – 2013-03-18 10:54:45

+1

正確的方式*是*與SMO,並且需要適當的權限(您可能沒有)。你爲什麼拒絕這樣做? – alroc 2013-03-18 11:19:58

+0

因爲SMO需要(據我所知)SQL服務器的特定版本(有2005,08,12等dll的)。 – 2013-03-18 11:23:02

回答

3

這既不可能,也不是一個好主意。 MSSQL數據庫太複雜,無法像SQL那樣可靠地轉儲。我知道沒有任何工具能夠一直得到這個權利。

正確的方法來處理這是爲了給SQL Server用戶訪問該文件夾的權利。找出正在使用的用戶(可能是procexp.exe?)並添加必要的權限。

+0

感謝您的回覆,但主要想法是通過在不更改基本權限的情況下向DB(使用代碼等)查詢來進行轉儲。 – 2013-03-18 11:21:08

+0

好的。所以我建議你使用SMO腳本架構和數據。它可以做到這一點。 SMO獨立於SQL Server版本。只需使用可用的最新SMO。 – usr 2013-03-18 11:52:03

+0

獨立?那麼我可以使用2008服務器的2005和2012服務器的smo庫嗎? – 2013-03-18 11:53:50

0

YE它是,但是方式比你想象的更復雜。您需要實現一個VDI specification組件(根據定義,它是本機代碼,不受管理)。然後,您可以將此VDI加載到SQL Server並備份到其中。請參閱SHEDDING LIGHT on VSS & VDI Backups in SQL Server。在SQL Server Compressed Backup已完成。

當然這是你想要的,實現VDI的人不需要問這樣的問題。那麼真的是試圖做什麼?看來你想要的更多的是腳本編號爲的數據庫,其中有SMO Scripter