- PR -

Sql server 2005 のMasterのDBの照合順序は、変更出来ないのでしょうか?

1
投稿者投稿内容
ケイ
大ベテラン
会議室デビュー日: 2004/04/20
投稿数: 100
投稿日時: 2006-06-14 20:44
今までMSDE2000+VB6.0で開発を行っていたのですが、

Sql Server 2000の販売終了に伴い、Sql server 2005に変更する事が可能か
どうかを調査する為にMSDE2000のDB構成を、Sql Server 2005に
移行してアプリが正常に動く事を確認中です。

しかし、照合順序について競合エラーが発生してしまい困っています。

接続状況と、ユーザーが処理中の業務を調べる為に、

CREATE TABLE TesLock (
端末名 Varchar(70)
業務 Varchar(50))

を作成し、TesLock を参照して作業中の業務を取得しています。

接続が切れているのにもかかわらず、TesLock にデータが残っていては困るので

Delete From TesLock where 端末名 not in (
select HostName from master.dbo.sysprocesses a,master.dbo.sysdatabases b
where a.dbid = b.dbid and a.loginame = 'ユーザー名'
and b.name = 'TesDB' Group by HostName)

を実行して、データを削除しているのですが、
「equal to 操作の "SQL_Latin1_General_CP1_CI_AS" と
"Japanese_CI_AS" 間での照合順序の競合を解決できません。」

が発生します。

TesLock テーブルが作成してあるTesDBは、照合順序「Japanese_CI_AS」で作成しました。

Masterは、Sql Server 2005をインストールした際に作成されていたのですが、
照合順序「SQL_Latin1_General_CP1_CI_AS」で作成されています。

Alter Database 〜を実行してみたり、
ツールで、Masterの照合順序を変更してみましたが、
Masterは、システムDBの為変更できません。となり変更できませんでした。

Masterの照合順序は、変更できないのでしょうか?
それとも、私のインストールの仕方が正しくなかったからでしょうか?


※下記のselect分だけだったら、問題はありませんでした。
select HostName from master.dbo.sysprocesses a,master.dbo.sysdatabases b
where a.dbid = b.dbid and a.loginame = 'ユーザー名'
and b.name = 'TesDB' Group by HostName

select分で取得したデータ数分LoopでDelete分を作成して処理していくしかないのでしょうか?

何かお分かりの方いましたら、教えて下さい。
お願い致します。

ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-06-15 13:36
こんにちは。

照合順序の問題はややこしいですね。
COLLATE句で照合順序のキャストが可能ですが、ヒントになるでしょうか。

COLLATE (Transact-SQL)
http://msdn2.microsoft.com/ja-JP/library/ms184391.aspx
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2006-06-15 13:50
引用:

ケイさんの書き込み (2006-06-14 20:44) より:


Alter Database 〜を実行してみたり、
ツールで、Masterの照合順序を変更してみましたが、
Masterは、システムDBの為変更できません。となり変更できませんでした。

Masterの照合順序は、変更できないのでしょうか?
それとも、私のインストールの仕方が正しくなかったからでしょうか?




サーバ自体の照合順序を変更するのはちょっと大変です。

サーバー照合順序の設定と変更
http://msdn2.microsoft.com/ja-jp/library/ms179254.aspx


で、ご自分が作成したテーブル列のCOLLATEを"SQL_Latin1_General_CP1_CI_AS"にしては
いけないのでしょうか?


_________________
夏椰 @ わんくま同盟
夏椰の庵
Microsoft MVP for Windows Server System - SQL Server ( Jul 2006 - Jun 2008 )
ケイ
大ベテラン
会議室デビュー日: 2004/04/20
投稿数: 100
投稿日時: 2006-06-15 18:11
返信ありがとうございます。

引用:

夏椰さんの書き込み (2006-06-15 13:50) より:
サーバ自体の照合順序を変更するのはちょっと大変です。

サーバー照合順序の設定と変更
http://msdn2.microsoft.com/ja-jp/library/ms179254.aspx



う・・・本当に大変そうですね・・・・

引用:

夏椰さんの書き込み (2006-06-15 13:50) より:

で、ご自分が作成したテーブル列のCOLLATEを"SQL_Latin1_General_CP1_CI_AS"にしては
いけないのでしょうか?



「SQL_Latin1_General_CP1_CI_AS」のままやって見ましたが、
Varchar(12) で作成してある列に、漢字、全角数字をinsertしたら、
漢字は「?」に変換されて、数字は、半角の数字に変換されてしましました。

「Japanese_CI_AS」に変更したら、上記の動作はなくなったのでこれが原因だと思っていました。
※MSDE2000の場合も、「Japanese_CI_AS」で作成していたので・・・

「サーバー照合順序の設定と変更」
頑張ってやってみます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)