『壹』 怎麼查看sqlSERVER的字元集設置
user master
select SERVERPROPERTY(N'edition') as Edition --數據版本,如企業版、開發版等
SERVERPROPERTY(N'collation') as Collation --資料庫字元集
SERVERPROPERTY(N'servername') as ServerName --服務名
@@VERSION as Version --資料庫版本號
@@LANGUAGE AS Language --資料庫使用的語言,如us_english等
參考資料鏈接:http://www.cnblogs.com/fygh/archive/2012/05/15/2501598.html。
拓展:
1、SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL Server是由Microsoft開發和推廣的關系資料庫管理系統(DBMS)。
2、SQL Server是由Microsoft開發和推廣的關系資料庫管理系統(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的,並於1988年推出了第一個OS/2版本。Microsoft SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用戶見面;SQL Server 2000是Microsoft公司於2000年推出,目前最新版本是2015年份推出的SQL SERVER 2015。
『貳』 如何查看sybase資料庫的字元集
1. JDBC連接串要有字元集設置
jdbc:sybase:Tds:192.168.3.11:5000/Wfis_db?charset=cp936
2. 伺服器配置成cp936
(1) 使用isql查看當前已經安裝的字元集
isql -Usa -P
>use master
>go
>select id,name from syscharsets
>go
id name
--- ----------------
0 ascii_8
1 iso_1
2 cp850
20 defaultml
21 thaidict
22 iso14651
24 utf8bin
25 binary
39 altnoacc
45 altdict
46 altnocsp
47 scandict
48 scannocp
50 bin_iso_1
50 bin_cp850
51 dict
52 nocase
53 nocasep
54 noaccent
55 espdict
56 espnocs
57 espnoac
59 rusnocs
64 cyrnocs
65 elldict
69 hundict
70 hunnoac
71 hunnocs
73 turknoac
74 turknocs
129 cp932bin
130 dynix
137 gb2312bn
140 cyrdict
155 turdict
161 euckscbn
163 gbpinyin
165 rusdict
179 sjisbin
192 eucjisbn
194 big5bin
(41 rows affected)
從列表中看出沒有安裝cp936字元集
(2) 查看當前使用的預設字元集
>sp_configure "default char"
>go
Parameter Name Default Memory Used Config Value
Run Value Unit Type
------------------------------ ----------- ----------- ------------
----------- -------------------- ----------
default character set id 2 0 2
2 id static
預設字元集的id是2,查看上面的列表,可以得知是cp850
(3) 因為上面的列表中沒有安裝cp936,所以就安裝cp936字元集
進入目錄C:\sybase\charsets\cp936
運行命令 charset -Usa -Plongtop binary.srt cp936
運行完成後,系統就安裝了cp936字元集
(4) 驗證是否確實安裝了cp936字元集
isql -Usa -P
>use master
>go
>select id,name from syscharsets
>go
id name
--- ------------------------------
0 ascii_8
1 iso_1
2 cp850
20 defaultml
21 thaidict
22 iso14651
24 utf8bin
25 binary
39 altnoacc
45 altdict
46 altnocsp
47 scandict
48 scannocp
50 bin_iso_1
50 bin_cp850
50 bin_cp936
51 dict
52 nocase
53 nocasep
54 noaccent
55 espdict
56 espnocs
57 espnoac
59 rusnocs
64 cyrnocs
65 elldict
69 hundict
70 hunnoac
71 hunnocs
73 turknoac
74 turknocs
129 cp932bin
130 dynix
137 gb2312bn
140 cyrdict
155 turdict
161 euckscbn
163 gbpinyin
165 rusdict
171 cp936
179 sjisbin
192 eucjisbn
194 big5bin
(43 rows affected)
從列表中可以發現已經安裝了cp936,id是171
(5) 把系統的當前預設字元集設置為cp936
>sp_configure "default char",171
>go
In changing the default sort order, you have also reconfigured SQL Server's
default character set.
Parameter Name Default Memory Used Config Value
Run Value Unit Type
------------------------------ ----------- ----------- ------------
----------- -------------------- ----------
default character set id 2 0 171
2 id static
(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must
be rebooted in order for the change to take effect.
Changing the value of 'default character set id' to '171' increases the amount
of memory ASE uses by 6 K.
(return status = 0)
(6) 重啟Sybase服務,使更改生效
第一次重啟,系統會對已經存在的數據進行轉換,轉換完成後自動停止服務,只要再次啟動服務就可以了。
(7) 更改DB客戶端的字元集
DBArtisan中要更改客戶端的字元集為cp936才能連接cp936的伺服器
通過菜單\Logfile\Options...打開對話框,選擇Connection標簽,
更改Client Character輸入框的值為cp936。
資料庫的charset修改為cp936時,使用isql按如下的方式
isql -Usa -P -Sdbserver -Jcp936
『叄』 sybase中文字元查詢
「機械廠」的GB系列編碼(cp936約同)位元組序列是BB FA D0 B5 B3 A7,「黨」是B5 B3,按照位元組為單位去找,確實能在第5個位元組處匹配,於是出現了並非期望的查詢結果。
根治的辦法:
把資料庫伺服器的字元集改為utf-8,客戶端連接用cp936字元集。
utf-8字元編碼的最重要特徵是字元的第一個位元組和後續位元組有明顯的不同,不會混淆,所以仍然按照位元組流的方式去找,也不會找錯。「機械廠」序列是E6 9C BA E6 A2 B0 E5 8E 82,「黨」是E5 85 9A,這3個位元組在9個位元組中就不能匹配了。
湊合的辦法:不改字元集,條件是字元串中全是漢字,那麼加一個條件就是匹配位置是偶數,對於從1開始的,則匹配位置是奇數。
select * from T1 where c1 like "%黨%"改寫為select * from T1 where charindex( 「黨」, c1 ) & 1 = 1
不過,即使這樣約束,這個辦法也不大可靠,例如「機械廠黨支持部」就找不到了,因為第一個B5 B3的匹配在位置4了,第二個才會是7,而charindex是返回第一個匹配。
建議,痛下決心,採用根治方法吧。
『肆』 怎樣查看資料庫的字元集
Oracle資料庫查看和修改伺服器端的字元集的方法是本文主要要介紹的內容,接下來救讓我們一起來了解一下這部分內容。
A、oracle server 端字元集查詢
select userenv('language') from al
其中NLS_CHARACTERSET 為server端字元集
NLS_LANGUAGE 為 server端字元顯示形式
B、查詢oracle client端的字元集
$echo $NLS_LANG
如果發現你select 出來的數據是亂碼,請把client端的字元集配置成與linux操作系統相同的字元集。如果還是有亂碼,則有可能是資料庫中的數據存在問題,或者是oracle服務端的配置存在問題。
C、server端字元集修改
將資料庫啟動到RESTRICTED模式下做字元集更改:
SQL> conn /as sysdba Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
System altered.
SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
System altered.
SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
System altered.
SQL> alter database open;
Database altered.
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
提示我們的字元集:新字元集必須為舊字元集的超集,這時我們可以跳過超集的檢查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
Database altered.
SQL> select * from v$nls_parameters;
略
19 rows selected.
重啟檢查是否更改完成:
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select * from v$nls_parameters;
略
19 rows selected.
我們看到這個過程和之前ALTER DATABASE CHARACTER SET操作的內部過程是完全相同的,也就是說INTERNAL_USE提供的幫助就是使Oracle資料庫繞過了子集與超集的校驗。
這一方法在某些方面是有用處的,比如測試;應用於產品環境大家應該格外小心,除了你以外,沒有人會為此帶來的後果負責。
結語(我們不妨再說一次):
對於DBA來說,有一個很重要的原則就是:不要把你的資料庫置於危險的境地!
這就要求我們,在進行任何可能對資料庫結構發生改變的操作之前,先做有效的備份,很多DBA沒有備份的操作中得到了慘痛的教訓。
D、client端字元集修改
在 /home/oracle與 /root用戶目錄下的。bash_profile中
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 語句
『伍』 關於java查詢資料庫字元集的問題
1. JDBC連接串要有字元集設置
jdbc:sybase:Tds:192.168.3.11:5000/Wfis_db?charset=cp936
我項目中的寫法:
Db.url=jdbc:sybase:Tds:angkor[伺服器名或IP]:5000/angkor[資料庫名]?charset=eucgb
2. 伺服器配置成cp936
(3) 因為上面的列表中沒有安裝cp936,所以就安裝cp936字元集
進入目錄C:\sybase\charsets\cp936
運行命令 charset -Usa -Plongtop binary.srt cp936
運行完成後,系統就安裝了cp936字元集
(4) 驗證是否確實安裝了cp936字元集
isql -Usa -Plongtop
>use master
>go
>select id,name from syscharsets
>go
id name
(5) 把系統的當前預設字元集設置為cp936
>sp_configure "default char",171
>go
In changing the default sort order, you have also reconfigured SQL Server's
default character set.
Parameter Name Default Memory Used Config Value
Run Value Unit Type
------------------------------ ----------- ----------- ------------
----------- -------------------- ----------
default character set id 2 0 171
2 id static
(1 row affected)
Configuration option changed. Since the option is static, Adaptive Server must
be rebooted in order for the change to take effect.
Changing the value of 'default character set id' to '171' increases the amount
of memory ASE uses by 6 K.
(return status = 0)
(6) 重啟Sybase服務,使更改生效
第一次重啟,系統會對已經存在的數據進行轉換,轉換完成後自動停止服務,只要再次啟動服務就可以了。
(7) 更改DB客戶端的字元集
DBArtisan中要更改客戶端的字元集為cp936才能連接cp936的伺服器
通過菜單\Logfile\Options...打開對話框,選擇Connection標簽,
更改Client Character輸入框的值為cp936。
資料庫的charset修改為cp936時,使用isql按如下的方式
isql -Usa -Plongtop -Sdbserver -Jcp936
『陸』 SYBASE導入數據時提示亂碼錯誤
SYBASE導入數據時提示亂碼錯誤關於這個問題,我覺得 這是oracle字元集的問題。 dmp文件是從ZHT16BIG5字元集(繁體中文)導出的,而你要導入的資料庫字元集是ZHS16GBK(簡體中文) 可以通過修改導入的資料庫字元集來導入此文件。怎樣修改字元集? 8i以上版本可以通過alter database來修改字元集,但也只限於子集到超集,不建議修改props$表,將可能導致嚴重錯誤。 Startup nomount; Alter database mount exclusive; Alter system enable restricted session; Alter system set job_queue_process=0; Alter database open; Alter database character set ZHT16BIG5; 導入後還可以把字元集改回ZHS16GBK,如果沒有什麼問題,並且數據不是亂碼,就算成功了。
『柒』 sybase資料庫查詢數據
1.log文件用ultraedit就可以打開,下載一個安裝就可;
2.我遇到的db文件,都是asa資料庫的(sybase
sql
anywhere
7)可安裝之後,打開\%sybase%\win32\dbisqlc.exe,輸入用戶名密碼,瀏覽到該db文件,就可用sql語句對其內容進行查詢。
另外,我在網上也搜到了一個方法:
後來裝了個power
build
8,裡面就有一步是要裝sybase
7的資料庫。安裝完之後,就可以在控制面板的管理工具下面的odbc管理器中,添加sybase
驅動的這種db格式的數據源,然後就可以在office
access中導入這個odbc數據源,查看錶裡面的文件了。需要注意的是:db
文件的默認用戶名密碼是dba:sql,這是需要輸入odbc的。