VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

我想要將M$SQL的資料庫從一台server移至另一台server,有什麼比較好的方法嗎?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2046


第 1 樓

發表發表於: 星期三 九月 08, 2004 10:50 am    文章主題: 我想要將M$SQL的資料庫從一台server移至另一台server,有什麼比較好的方法嗎? 引言回覆

資料來源: http://support.microsoft.com/default.aspx?scid=fh;ZH-TW;sfaq3075

如果二台server的Code Page (Character Set & Sort Order)相同,可以
將資料庫從Server 1備份出,再拿至Server 2做restore
將data file (.mdf)及log file (.ldf) copy至server 2,再執行 sp_attach_db '<dbname>' , '<datafile name>' , '<logfile name>' ...
將資料庫attach至另一台server
例: exec sp_attach_db N'northwind', N'd:\mssql7\data\northwnd.mdf', N'd:\mssql7\data\northwnd.ldf'
go

若二台server之Code Page不同,則可使用DTS(Data Transformation Services)將資料庫transfer至另一台server。

_________________
利用>>搜尋<<的功能會比問的還要快得到答案..網路購物當然要比較那個最划算
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 3798
來自: Taipei,Taiwan

第 2 樓

發表發表於: 星期五 九月 10, 2004 5:36 pm    文章主題: 引言回覆

引言回覆:

如果二台server的Code Page (Character Set & Sort Order)相同,可以
將資料庫從Server 1備份出,再拿至Server 2做restore
將data file (.mdf)及log file (.ldf) copy至server 2,再執行 sp_attach_db '<dbname>' , '<datafile name>' , '<logfile name>' ...
將資料庫attach至另一台server
例: exec sp_attach_db N'northwind', N'd:\mssql7\data\northwnd.mdf', N'd:\mssql7\data\northwnd.ldf'
go


目前我有做這樣的功能,
1. 以 SQLSTRINGCONNET() 連接SQL A
2. 以 SQLEXEC() 下 DETACH DB
3. COPY FILE TO SQL B
4. 以 SQLSTRINGCONNET() 連接SQL B
5. 以 SQLEXEC() 下 ATTACH DB

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2046


第 3 樓

發表發表於: 星期五 九月 10, 2004 8:02 pm    文章主題: 引言回覆

以前都用SQL SERVER所附的管理工具去做 SQL SERVER A做BACKUP後, 再去SQL SERVER B做restore , 現在是安裝MSDE就沒有這些工具可以用了 , 本來是用程式寫restore功能, 但有時會有問題, 這幾天研究用 attach db的方式比較穩定了, 以下是我寫的程式碼, 有需要的人參考看看吧!
代碼:

*本程式假設你已經將SQL DATABASE的2個檔案皆已存這放程式的這個目錄上了.
msqlpath = [C:\Program Files\Microsoft SQL Server\MSSQL\Data\]
mdsn = [DRIVER=SQL Server;SERVER=]+ALLTRIM(left( sys(0), at('#',sys(0))-1 ))+[;DATABASE=master;Trusted_Connection=Yes]
mdatabase='trade'           &&-- SQL DATABASE的名稱
mmdf = mdatabase+[_data.mdf]
mldf = mdatabase+[_log.ldf]

wait windows 'copy DATABASE file......' nowait
copy file &mmdf to "&mmdf"
copy file &mldf to "&mldf"
wait clear

sqlhead=SQLSTRINGCONNECT( mdsn )
if sqlhead<=0
   messagebox('can not connect to SQL SERVER ('+ left( sys(0), at('#',sys(0))-1 ) +')' )
   return
endif

wait windows 'restore database.......Please wait ...' nowait
mret = SQLEXEC( sqlhead,[sp_attach_db ']+mdatabase+[', ']+msqlpath+mmdf+[',']+msqlpath+mldf+['])
wait clear
if mret>0
   messagebox(' RESTORE OK ^^' )
else
   messagebox(' can not RESTORE DATABASE ')
endif

=SQLDISCONNECT(sqlhead)
return

_________________
利用>>搜尋<<的功能會比問的還要快得到答案..網路購物當然要比較那個最划算
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 3798
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期五 九月 10, 2004 11:39 pm    文章主題: 引言回覆

老實說,
我也是因為客戶不想花錢買M$ SQL SERVER 需要將就用MSDE ,
才做這樣的功能..... Embarassed

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
goto-dream



註冊時間: 2004-05-11
文章: 909


第 5 樓

發表發表於: 星期日 十一月 09, 2008 5:57 pm    文章主題: 引言回覆

to garfield

代碼:
Local nHandle,sqlCommand,sqlText,lc_Path



lcDB_Name=Alltrim(ReadIniFile("Startup","Database",mgSys_Path+"main.ini"))
lcDB_Server=Alltrim(ReadIniFile("Startup","DBServer",mgSys_Path+"main.ini"))
lcDB_Uid=Alltrim(ReadIniFile("Startup","UID",mgSys_Path+"main.ini"))
lcDB_Pwd=Alltrim(ReadIniFile("Startup","PWD",mgSys_Path+"main.ini"))


Try

   oserver=Createobject("sqldmo.sqlserver")
   oserver.Connect(lcDB_Server,lcDB_Uid,lcDB_Pwd)&&連接
   obackup=Createobject("sqldmo.backup")
   obackup.Database=lcDB_Name
   obackup.Password="12345" &&給備份檔案�#91;密碼
   bakfile=mgSys_Path+"backup\sc_"+Dtos(Date())+".dat"
   obackup.Files=bakfile
   obackup.initialize=.T.
   obackup.ACTION=0
   obackup.SQLBackup(oserver)

   Messagebox("匯出資料作業完成!!  "+mgSys_Path+"backup\sc_"+Dtos(Date())+".dat",0+64,"提示視窗")


Catch To Foobar
   Messagebox("異常錯誤!!可能是帳號或密碼",0+64,"提示視窗")

Finally
   *CLEAR EVENTS
Endtry



代碼:
LOCAL nHandle,sqlCommand,sqlText



lcDB_Name=Alltrim(ReadIniFile("Startup","Database",mgSys_Path+"main.ini"))
lcDB_Server=Alltrim(ReadIniFile("Startup","DBServer",mgSys_Path+"main.ini"))
lcDB_Uid=Alltrim(ReadIniFile("Startup","UID",mgSys_Path+"main.ini"))
lcDB_Pwd=Alltrim(ReadIniFile("Startup","PWD",mgSys_Path+"main.ini"))


gcTable=GETFILE('DAT', '請選擇還原的檔案:','瀏覽', 0, '瀏覽檔案')

IF LEN(ALLTRIM(gcTable))==0
   MESSAGEBOX("未選取檔案!!",0+64,"提示視窗")
   RETURN
ENDIF



oserver=CREATEOBJECT("sqldmo.sqlserver")&&建SERVER對象
oserver.Connect(lcDB_Server,lcDB_Uid,lcDB_Pwd)&&連接
orestore=CREATEOBJECT("sqldmo.restore")
orestore.Database=lcDB_Name
orestore.Files=allt(gcTable)
orestore.Password="12345"
orestore.SQLRestore(oserver)




MESSAGEBOX("匯入資料作業完成!!",0+64,"提示視窗")

_________________
福隆昌淨水有限公司--淨水器的專家,淨水器,飲水機,濾心!!

想了解更多,您可上幸福雞湯組.找尋!!丁澐瑄.老師.

          愛作夢
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
ezpos



註冊時間: 2011-04-20
文章: 270


第 6 樓

發表發表於: 星期六 五月 28, 2016 11:27 am    文章主題: 引言回覆

garfield 寫到:
以前都用SQL SERVER所附的管理工具去做 SQL SERVER A做BACKUP後, 再去SQL SERVER B做restore , 現在是安裝MSDE就沒有這些工具可以用了 , 本來是用程式寫restore功能, 但有時會有問題, 這幾天研究用 attach db的方式比較穩定了, 以下是我寫的程式碼, 有需要的人參考看看吧!


用程式sqldmo.backup 寫的確實有問題!!!

目前正在找新方法

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
ezpos



註冊時間: 2011-04-20
文章: 270


第 7 樓

發表發表於: 星期六 五月 28, 2016 11:31 am    文章主題: 引言回覆

garfield 寫到:
以前都用SQL SERVER所附的管理工具去做 SQL SERVER A做BACKUP後, 再去SQL SERVER B做restore , 現在是安裝MSDE就沒有這些工具可以用了 , 本來是用程式寫restore功能, 但有時會有問題, 這幾天研究用 attach db的方式比較穩定了, 以下是我寫的程式碼, 有需要的人參考看看吧!
代碼:

*本{式假]你已經將SQL DATABASE的2個檔案皆已存這放{式的這個目錄上了.
msqlpath = [C:\Program Files\Microsoft SQL Server\MSSQL\Data\]
mdsn = [DRIVER=SQL Server;SERVER=]+ALLTRIM(left( sys(0), at('#',sys(0))-1 ))+[;DATABASE=master;Trusted_Connection=Yes]
mdatabase='trade'           &&-- SQL DATABASE的名稱
mmdf = mdatabase+[_data.mdf]
mldf = mdatabase+[_log.ldf]

wait windows 'copy DATABASE file......' nowait
copy file &mmdf to "&mmdf"
copy file &mldf to "&mldf"
wait clear

sqlhead=SQLSTRINGCONNECT( mdsn )
if sqlhead<=0
   messagebox('can not connect to SQL SERVER ('+ left( sys(0), at('#',sys(0))-1 ) +')' )
   return
endif

wait windows 'restore database.......Please wait ...' nowait
mret = SQLEXEC( sqlhead,[sp_attach_db ']+mdatabase+[', ']+msqlpath+mmdf+[',']+msqlpath+mldf+['])
wait clear
if mret>0
   messagebox(' RESTORE OK ^^' )
else
   messagebox(' can not RESTORE DATABASE ')
endif

=SQLDISCONNECT(sqlhead)
return



這個方法是
讓sqlserver停用
才去備份的嗎???

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
syntech



註冊時間: 2003-05-16
文章: 3798
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期六 五月 28, 2016 11:22 pm    文章主題: 引言回覆

用 DETACH/ATTACH DB 來搬資料庫,
SQL SERVER 並沒有停用.
只是暫時把某一個資料庫移除而已.

如果把SQL SERVER 停用再COPY 檔案,
SQL SERVER 2000 時我用過,
這樣也可以.
(我遇到的CASE 很複雜,因為客戶的SQL SERVER 硬體(硬碟)損壞,花了一番功夫才搞成比較正常的情況)


不過 SQL SERVER 2008 以後,
增加很多怪權限設定,
連用 DETACH/ATTACH DB 來搬資料庫,
都很麻煩.
另外一家協力硬體商很愛幫他的客戶升級SQL SERVER,
每次都覺得M$不要再整我了.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 3798
來自: Taipei,Taiwan

第 9 樓

發表發表於: 星期六 五月 28, 2016 11:27 pm    文章主題: 引言回覆

garfield 寫到:
以前都用SQL SERVER所附的管理工具去做 SQL SERVER A做BACKUP後, 再去SQL SERVER B做restore , 現在是安裝MSDE就沒有這些工具可以用了



從 SQL SERVER 2008 開始,
M$提供 SQL Server Management Studio Express ,
可以管理資料庫,

但是 M$ 還是 M$,
早一點的,沒有 SQL PROFILER 工具,
SQL 2012 EXPRESS 版的 不可以調整TABLE 結構,
下載使用時請做好心理準備.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
ezpos



註冊時間: 2011-04-20
文章: 270


第 10 樓

發表發表於: 星期一 五月 30, 2016 2:33 pm    文章主題: 引言回覆

怎麼不用這個方法??!

代碼:

D:\osql -E < u_Backup.sql



u_Backup.sql 內容
代碼:

USE ezpos
GO
BACKUP DATABASE ezpos
  TO DISK = 'D:\ezpos.bak'
  WITH FORMAT,
  NAME = 'Full Backup of EZPOS'
GO




我用這個方法做排程..沒辦法做到備份?手動按可以.
可能出在權限?

_________________
ezPos收銀機 簡單好用低成本 http://www.ezpos.info
全新美觀的POS收銀機.POS軟硬體耗材.
軟體客制化.網站規劃....能賺錢的都可以找我

http://www.twelife.com 台灣生活網
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作