當前位置:首頁 » 編程語言 » 打開賬套sql高版本轉低版本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

打開賬套sql高版本轉低版本

發布時間: 2022-06-26 21:15:32

1. 為什麼sql server 高版本的資料庫不能附加低版本 mdf文件

是這樣的,662是SQL Server 2008 SP2以後的資料庫版本號,SP2之前的SQL Server 2008
的資料庫版本好是655,而661是SQL Server 2008 R2的資料庫版本號,本身SQL Server 2008 R2的版本要比SQL Server 2008 要高,按常理661版的資料庫文件是不能附加到支持655版本號的SQL Server 2008里的。至於出現這個蛋疼的提示是因為微軟在SQL Server 2008 SP2里加入了15k分區數的功能,而發布SP2之前就已經發布了SQL Server 2008 R2了,由於SQL Server 2008 R2 RTM並不支持15k分區的功能,如果按常規SQL Server 2008還保持655的版本號的話就可能會出現附加15k分區的數據文件到SQL Server
2008 R2 RTM中,這肯定是不能附加的,所以微軟為了解決這個難題,就打破常規,SQL Server 2008 SP2里將資料庫的版本號改為662,這樣,由SQL Server 2008 R2 RTM的資料庫版本號比SQL Server 2008 SP2的低,所以自然就不能附加了,避免了麻煩,不過為了一15k分區的功能改變了版本號帶來的副作用就像樓主這種情況了。
這時問題的根本緣由。
其實說白了,你是拿SQL Server 2008 R2的資料庫附加到SQL Server 2008中,這肯定是不行的。要麼將你現在的資料庫實例升級到 SQL Server 2008 R2並安裝最新的SP補丁之後再附加。要麼將chat資料庫附加到SQL Server 2008 R2版的資料庫實例里,生成SQL Server 2008版的腳本文件,使用腳本文件部署到SQL Server 2008 SP2里。

至於前邊有朋友說用備份的方式,如果理解了我前邊說的就知道肯定也是行不通的。

2. excel怎樣把高版本轉化為低版本

高版本的excel文件是以後綴名xlsx結尾的,低版本文件是以xls結尾的。利用excel的另存為功能可以實現高低版本的轉換。

1、用2007版excel軟體打開高版本文件後,點擊左上角的office按鈕。

3. mysql 高版本數據轉換低版本問題

很簡單,從高版本資料庫導出的時候,不需要完全備份形式,只需備份數據或是備份建庫建表和數據SQL文件,然後到執行操作至低版本資料庫中就可以了。

4. 如何把SQL Server資料庫從高版本降級到低版本

直接給SQL Server資料庫降級是不支持的。但您可以使用一個靈活的變通方法來解決這個問題。您可以使用SQL Server Management Studio中首先為一個較低的版本生成資料庫腳本,然後使用數據導入/導出向導將原來資料庫數據傳輸到高版本資料庫中。例如,如果你想降低一個SQL Server 2008資料庫到SQL Server 2005,您可以按照以下步驟:
1. 在SQL Server Management Studio 2008中打開SQL Server2008資料庫。
2.在對象資源管理器中右鍵單擊資料庫名稱並選擇「任務生成腳本......」
3.在「腳本向導」對話框中,選擇資料庫的名稱,並檢查「腳本所有在選擇資料庫對象」。然後點擊「下一步」。
4.設置為SQL Server2005的伺服器版本的腳本「選項」。
5. SQL Server 2005中運行腳本。
6. 使用SQL Server導入和導出向導從SQL Server 2008到SQL Server 2005導入數據
同樣,如果你想降低一個SQL Server 2005資料庫到SQL Server 2000,你也可以在SQL Server 2005 Management Studio中執行上述步驟。

5. 用友帳套問題:SQL資料庫升級至2008,怎麼打開SQL2000的用友帳套

具體檢查用友版本,另外是本機升級還是異機升級?

任何升級操作前請首先做好數據備份!

本級升級可以直接將SQL2000資料庫文件(MDF和LDF文件)附加到SQL2008里,然後配置用友的數據連接即可。
如果是異機升級,將原SQL2000服務停止,拷貝資料庫文件(MDF和LDF文件)到SQL2008服務機上,然後附加。

用友ERP-U8系列產品相關資料庫為UF***(包含UFSYSTEM,UFDATA_帳套號_年度)其中年度數據物理文件名都為UFDATA.MDF和UFDATA.LDF,每個年度獨立文件夾。
如果是其他產品請檢查資料庫名,除了系統資料庫之外的資料庫我建議你都附加到SQL2008上。

6. sql高版本向低版本附加報錯,誰能提供解決的方法呀

  1. SQL 只支持向後兼容,

  2. 所以高版本的資料庫不能在低版本的SQL 上附加。

  3. 解決辦法:先在同版本SQL下附加資料庫,

  4. 在使用SQL 腳本導出表結構與資料庫,

  5. 存儲過程等,再在低版本資料庫上創建一個新資料庫,

  6. 把腳本執行。

7. 如何把SQLServer資料庫從高版本降級到低版本

由於目前還廣泛使用著SQLServer2000,很多公司又想使用新的SQLServer,從而直接【分離/附加】或者【備份/還原】資料庫,在
不同版本之間存放。往往就會遇到版本不兼容的問題。前幾天遇到了從我本機2008R2上備份的一個資料庫還原到2008上面時報錯:

運行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出這個版本不兼容問題,大部分情況
下,從低版本升級到高版本,只要不是跨度太大,如2000升級到2012,都不會怎麼報錯。除非使用了一些新版本不兼容的特性如*=來實現left
join的語句。但是就像上圖那樣,從高版本還原到低版本的時候,問題就出現了,而且幾乎一定會報錯。
下面給出幾個小建議,例子是從2008 降級到2005:
方法一:使用圖形化操作(GUI),打開SSMS(SQL Server Management Studio)

步驟1:右鍵你要降級的資料庫,按下圖選擇:

步驟2:在對話框中選擇:

步驟3:在【高級】中選擇下圖:

步驟4:把腳本保存起來,然後在SQLServer2005中運行腳本。
詳細步驟可以看:http://bbs.csdn.net/topics/390438560?page=1#post-394316973 中的13樓的回復,有截圖
步驟5:通過【任務】→【導入數據】,把數據從2008導入到使用腳本創建的庫上如下圖,就完成了:

方法二:使用系統自帶的存儲過程實現:sp_dbcmptlevel ——將某些資料庫行為設置為與指定的 SQL Server 版本兼容
下面是其內部實現代碼:

[sql] view plain print?
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
create procere sys.sp_dbcmptlevel -- 1997/04/15
@dbname sysname = NULL, -- database name to change
@new_cmptlevel tinyint = NULL OUTPUT -- the new compatibility level to change to
as
set nocount on

declare @exec_stmt nvarchar(max)
declare @returncode int
declare @comptlevel float(8)
declare @dbid int -- dbid of the database
declare @dbsid varbinary(85) -- id of the owner of the database
declare @orig_cmptlevel tinyint -- original compatibility level
declare @input_cmptlevel tinyint -- compatibility level passed in by user
,@cmptlvl80 tinyint -- compatibility to SQL Server Version 8.0
,@cmptlvl90 tinyint -- compatibility to SQL Server Version 9.0
,@cmptlvl100 tinyint -- compatibility to SQL Server Version 10.0
select @cmptlvl80 = 80,
@cmptlvl90 = 90,
@cmptlvl100 = 100

-- SP MUST BE CALLED AT ADHOC LEVEL --
if (@@nestlevel > 1)
begin
raiserror(15432,-1,-1,'sys.sp_dbcmptlevel')
return (1)
end

-- If no @dbname given, just list the valid compatibility level values.
if @dbname is null
begin
raiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)
return (0)
end

-- Verify the database name and get info
select @dbid = dbid, @dbsid = sid ,@orig_cmptlevel = cmptlevel
from master.dbo.sysdatabases
where name = @dbname

-- If @dbname not found, say so and list the databases.
if @dbid is null
begin
raiserror(15010,-1,-1,@dbname)
print ' '
select name as 'Available databases:'
from master.dbo.sysdatabases
return (1)
end

-- Now save the input compatibility level and initialize the return clevel
-- to be the current clevel
select @input_cmptlevel = @new_cmptlevel
select @new_cmptlevel = @orig_cmptlevel

-- If no clevel was supplied, display and output current level.
if @input_cmptlevel is null
begin
raiserror(15054, -1, -1, @orig_cmptlevel)
return(0)
end

-- If invalid clevel given, print usage and return error code
-- 'usage: sp_dbcmptlevel [dbname [, compatibilitylevel]]'
if @input_cmptlevel not in (@cmptlvl80, @cmptlvl90, @cmptlvl100)
begin
raiserror(15416, -1, -1)
print ' '
raiserror (15048, -1, -1, @cmptlvl80, @cmptlvl90, @cmptlvl100)
return (1)
end

-- Only the SA or the dbo of @dbname can execute the update part
-- of this procere sys.so check.
if (not (is_srvrolemember('sysadmin') = 1)) and suser_sid() <> @dbsid
-- ALSO ALLOW db_owner ONLY IF DB REQUESTED IS CURRENT DB
and (@dbid <> db_id() or is_member('db_owner') <> 1)
begin
raiserror(15418,-1,-1)
return (1)
end

-- If we're in a transaction, disallow this since it might make recovery impossible.
set implicit_transactions off
if @@trancount > 0
begin
raiserror(15002,-1,-1,'sys.sp_dbcmptlevel')
return (1)
end

set @exec_stmt = 'ALTER DATABASE ' + quotename(@dbname, '[') + ' SET COMPATIBILITY_LEVEL = ' + cast(@input_cmptlevel as nvarchar(128))

-- Note: database @dbname may not exist anymore
exec(@exec_stmt)

select @new_cmptlevel = @input_cmptlevel

return (0) -- sp_dbcmptlevel
GO

語法

[sql] view plain print?
sp_dbcmptlevel [ [ @dbname = ] name ]
[ , [ @new_cmptlevel = ] version ]

參數
[ @dbname = ] name
要為其更改兼容級別的資料庫的名稱。資料庫名稱必須符合標識符的規則。name 的數據類型為 sysname,默認值為 NULL。
[ @new_cmptlevel = ] version
資料庫要與之兼容的 SQL Server 的版本。version 的數據類型為 tinyint,默認值為 NULL。該值必須為下列值之一:
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
返回代碼值
0(成功)或 1(失敗)

注意事項:
後續版本的 Microsoft SQL Server 將刪除該功能。請不要在新的開發工作中使用該功能,並盡快修改當前還在使用該功能的應用程序。 改為使用 ALTER DATABASE 兼容級別

8. 如何將高版本的mysql資料庫導入到低版本的PHP資料庫中

1.打開mysql管理工具,一般是
phpmyadmin
或Navicat,都是大同小異
2.打開導入工具,導入sql文件

9. 如何把高版本的sqlserver 還原到低版本的 sqlserver

是否大家有遇到過開始使用高版本的sql server當部署時卻被告知伺服器環境只能使用當前低版本的sql server,我就遇到了,我開發時使用的是sql 2008 r2 到部署時被告之段時間內不能升級到r2,只要將就部署了 。 但高版本遷移到低版本普通方法是行不通的,
1.我直接在sql2008附加sql2008r2的資料庫,結果 「版本為 661,無法打開。此伺服器支持 655 版及更低版本。不支持降級路徑。」 死路一條,呵呵。
2.在sql2008里建立新資料庫,然後通過復制數據方法,結果「 LiveUpdate returned a non-critical error. Available content updates may have failed to install.」 又是死路一條。
3.用資料庫鏡像,結果「由於資料庫可能有尚未備份的大容量日誌記錄更改,所以無法啟用資料庫鏡像。必須在鏡像上還原主體資料庫的上一次日誌備份。」意思是你不需要去還原,又是死路一條 4.用用導入導出的功能吧。 這個方法關鍵是如何確保保留原有表結構的主鍵、外鍵等 分兩個情況,對於資料庫數據量小的,可以很方便的解決 a.小數據的情況 1.先在低版本的伺服器上建立同名的資料庫。 2.在高版本的伺服器上右鍵點擊目標資料庫->任務->生成腳本 3.在選擇對象->選擇特定資料庫對象 4.選擇表、視圖、存儲過程,然後下一步 5.關鍵在這,這一步里,請選擇」高級「,選項里選擇[編寫DROP和Create腳本]項的」編寫DROP和Create腳本「,以及[編寫腳本和數據類型]項的「架構和數據" 6.保存腳本 7.在低版本的資料庫下執行腳本即可。 b.大數據情況 按理應該也可以通過類似包含架構和數據的方式來做,但是由於包含大數據的時候腳本文件太大,無法在分析器里執行,所以我們得繞一下。 1~4步和a情況相同 5.這步我們選擇」高級「,選項里選擇[編寫DROP和Create腳本]項的」編寫DROP和Create腳本「,以及[編寫腳本和數據類型]項的「架構" 6.保存腳本 7.在低版本的數據下執行腳本,注意(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外鍵名] FOREIGN KEY(欄位) REFERENCES 表名(欄位))這個先不要執行。 8.現在可以通過導入導出任務先將表的內容導入到低版本的資料庫內 9.再執行腳本內(ALTER TABLE 表名 WITH CHECK ADD CONSTRAINT [外鍵名] FOREIGN KEY(欄位) REFERENCES 表名(欄位))這樣的語句,此處將表的外鍵附加上。 10.。。大功告成