Microsoft SQL Server 総合スレ 5
1 無理
2 日本語版がある
>940
大文字小文字違いのデータを入れたいならその列の照合順を変えろ。
クエリのテーブル名などの大文字小文字が区別されるのはDB自体の照合順の影響。
テーブル名の大文字小文字とかも区別したいならDBの照合順を変えろ。
大文字/小文字区別はPKにしてると出来なかったんじゃなかった?
>>943 外部キーとリファレンス先のCOLLATEはあわせたほうがいいかも。
COLLATE Japanese_CS_AS_KS_WSが妥当かな?
945 :
NAME IS NULL:2008/03/22(土) 21:18:43 ID:xRI/qUei
SQL Server 2005のフリー版のやつにプロファイラってついていますか?
Express版には付いていない。
947 :
NAME IS NULL:2008/03/22(土) 23:39:51 ID:b4GggKf+
音楽のアルバム名を登録したテーブル「アルバムTBL」と
それに収録されている曲名リストを登録したテーブル「トラックTBL」があります。
指定した二つの曲が共に収録されているアルバム名を取得したいのですが、
どんなSQLになりますか?
二つのテーブルは「アルバムID」列で結合可能です。
アルバムTBLでアルバムIDは主キーです。
>947
SELECT アルバム名 FROM アルバムTBL WHERE
EXISTS (SELECT * FROM トラックTBL WHERE トラックTBL.アルバムID = アルバムTBL.アルバムID AND トラックTBL.曲名 = @曲名1)
AND EXISTS (SELECT * FROM トラックTBL WHERE トラックTBL.アルバムID = アルバムTBL.アルバムID AND トラックTBL.曲名 = @曲名2)
とりあえずパフォーマンスとかどうでもよかったらEXISTSで手抜き。
パフォーマンスが気になるレコード数があるか想定するなら普通の表結合に書き直してね。
949 :
NAME IS NULL:2008/03/24(月) 15:57:21 ID:/VnKEb27
VisualStudio2005インストール後にSQL Server2005をインストールしたんだけど、
ManagementStudioが見つからない(スタートメニューにない)
SQLServerのDVDを入れて追加でインストールしようとしても、
「開発ツールはインストール済みです」みたいなメッセージが出ます。
ManagemetStudioを入れるにはどうすればいいですか?
環境
OS:Windows Vista Ultimate
VS:2005 SP1
SQL:2005 SP2
ManagementStudioはVisualStudio内の一機能として実装される。
ヘルプ引けば一発
>>949 スタート+R -> sqlwb -> enter
でいつも起動している。
スタートメニューに出てこないってのはインストール順によって
そういうことになるという書き込みを見たような気がするが、
スタートメニューは使わないのでどうしたらいいかは覚えてないわ。
952 :
NAME IS NULL:2008/03/25(火) 13:59:28 ID:9n2z5qiu
今までWinNT + SQL6.5だったのが、
今度からWin2003server + SQL2005にグレードアップすることになりました!
恐らくこのスレにお世話になることと思います〜ウヒ
MERGE欲しいよう
955 :
NAME IS NULL:2008/03/25(火) 14:06:32 ID:9n2z5qiu
すみません、エラーが間違っていました。
タイトル: Microsoft SQL Server Management Studio Express
------------------------------
サーバー 'HIROSHI\ARIADNE' のデータベースのアタッチに失敗しました。
(Microsoft.SqlServer.Express.Smo)
ヘルプを表示するには
http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management. Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=データベースのアタッチ+Server&LinkId=20476 をクリック
------------------------------
ADDITIONAL INFORMATION:
Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo)
------------------------------
データベース 'Ariadne'(ID: 5) のページ (1:1310) で内部操作中に、一貫性が損なわれていることが検出されました。
ご購入元に問い合わせてください。参照番号 3。
データベース 'Ariadne' でログに記録された操作をやり直しているときにエラーが発生しました。
エラーが発生したログ レコード ID は (3124:1484:2) です。
通常、この前に特定のエラーが Windows イベント ログ サービスにログ記録されます。
完全バックアップからデータベースを復元するか、データベースを修復してください。
新しいデータベース 'Ariadne' を開けませんでした。CREATE DATABASE は中止されます。
(Microsoft SQL Server、エラー: 5242)
ヘルプを表示するには
http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server& EvtSrc=MSSQLServer&EvtID=5242&LinkId=20476 をクリック
------------------------------
BUTTONS:
OK
------------------------------
このエラーでした
956 :
NAME IS NULL:2008/03/25(火) 21:46:19 ID:3ZCn973U
時代は2008なんだがw
>>949 自分のメモに書いてあったんでコピペしとく。
問題
SQL Server をインストールした後、Management Studio がプログラム メニューにない。
解決方法
Start -> Run -> appwiz.cpl から Microsoft SQL Server 2005 の構成を変更し、
ワークステーション コンポーネントをアンインストールする。その後 Tools\Setup.exe を起動してワークステーション コンポーネントをインストールする。
説明
この問題は次のような時に起きる。
Visual Studio 2005 をインストールするなどして、SQL Server Express がインストールされる。
その後に SQL Server の上位エディションをインストールすると、ワークステーション コンポーネントのインストールがブロックされるため、
Management Studio がインストールされない。
>>952 一ヶ月ほど前のバックアップをもどす。
SQL Server のサービスを停止する。
壊れた mdf と ldf を上書きする。
SQL Server のサービスを起動する。
DBCC CHECKDB を実行する。
レスありがとうございます。
----------
一ヶ月ほど前のバックアップをもどす。
SQL Server のサービスを停止する。
壊れた mdf と ldf を上書きする。
SQL Server のサービスを起動する。
---------------
この時点でオブジェクトエクスプローラーでデータベースを確認すると、
(未確認)となってしまっていてDBCC CHECKDBが実行できないのです。
実行できる方法はありますか?
>壊れた mdf と ldf を上書きする。
デタッチしてから上書き
そんでアタッチ
としてもだめかね?
デタッチもできないんです。
>>961 それは激しく壊れているのでバックアップから戻しなさいという意味だね。
非公開の方法だけどその状態でも多少なんとかなる方法はある。
だけどできるかどうかは保障しないし、データの整合性なんかも保障されないよ。
データベース名や ldf のパスは自分の環境に適当に変えて、自分でリスクを負ってやってね。
-- システム テーブルを直接更新できるように設定を変える
USE master
GO
sp_configure 'allow updates',1
GO
RECONFIGURE WITH OVERRIDE
GO
-- データベース ステータスを緊急に変更する
UPDATE master..sysdatabases SET status = 32768 WHERE name = 'Northwind'
GO
-- トランザクション ログ ファイルを再構築する
USE master
GO
DBCC REBUILD_LOG('Northwind', 'C:\Program Files\Microsoft SQL Server\MSSQL$INSTANCE\Data\northwnd.ldf')
GO
-- データベースの整合性をチェックする
USE master
GO
DBCC CHECKDB(Northwind)
GO
-- これで直らない場合は適宜 CHECKDB のオプションを増やしていくか、BCP でデータだけサルベージする
-- データベース ステータスをを緊急からオンラインに戻す
UPDATE master..sysdatabases SET status = 16 WHERE name = 'Northwind'
GO
-- システム テーブルを直接更新できるようにした設定を戻す
sp_configure 'allow updates',0
GO
RECONFIGURE WITH OVERRIDE
GO
-- もう一度データベースの整合性をチェックする
USE master
GO
DBCC CHECKDB(Northwind)
GO
-- データベースのプロパティが変わってないかチェックする
>>964 ありがとうございます。
やってみます。
DBCCでの構文エラーが出てしまいます。
もう少しSQLについても調べてみます。
SQLの質問なんですが、SQL Serverなのでこちらに質問させてください。
SQL Server 2000
(入力)
XX08-001-0AB
XX07-087-7BB
XX07-401-7BB
XX07-500-10CC
(欲しい出力)
XX08-001
XX07-087
XX07-401
XX07-500
二つ目のハイフン以降を切り落としたものが欲しいのですが、
SQLだけで処理できますか?
SELECT LEFT(項目,8) とか?
すいません、例が悪かったです。
それだったら確かに簡単ですよね。
(入力)
XX08-1-0AB
xx07-87-7BB
XX07-500-10CC
(出力)
XX08-1
xx07-87
XX07-500
です。お願いします。
これでいけるのでは?
substr(項目, 0, instr(項目, '-', -1, 1))
'instr' は 関数名 として認識されません。
エラー出ました↑
SQL Server2000 にはinstr無いんですね。
代わりにcharindexを使って解決できました。
substring(項目, 0, charindex( '-', 項目, charindex( '-', 項目) +1))
同じ関数がネストして、なんか不格好なのですが・・・
>>971 ストアドファンクション使えばいいと思うよ。
2000でインデックスチューニングウイザードを行おうとしたら
ワークロードが必要といわれました。
SQLプロファイラで何かすればいいとどこかに書いてあったのですが
ワークロードはどうやって作ればいいのでしょうか?
>>973 役に立たないウィザードに頼らず、
自分でインデックス張れ。
ゆとりか?
>>973 どんな使い方をするかシナリオがないとどうチューニングしていいかわからないだろ。
そのシナリオがワークロード。
内容はそれなりの分量になるからまずBooks Onlineを読もう。
SQLServerでの文字列ソート順序と.NETでの文字列ソート順序が異なるようなのですが、一致させるためにはどの部分をいじればいいんでしょうか・・・教えてエロイ人(´・ω・`)
照合順序でググって美奈代
978 :
976:2008/03/31(月) 23:13:40 ID:???
Windows照合順序とかJapanese_90あたりがくさそうですが、よくわからず・・・
明日また調べてみるです。
979 :
NAME IS NULL:2008/04/01(火) 20:36:52 ID:VVV3Eqei
>>911 超遅レスですがありがとうございました。
そこはインデックスしか指定できないと思ってました。
Windows2000Server Standard + SQLServer2000 Standard(SP4)で動いている
システムがあるのですが、サーバマシンの挙動がおかしくなっているので、
マシンのリプレースを考えています。
SQLServer2000をそのまま使った場合、Windows2003Serverは32Bit版と
64Bit版(WOW64上で動かす)とではどちらが安定性や速度的に優位でしょうか?
今日、ビューのDDLでサブクエリにWITH(NOLOCK)とかWITH(ROWLOCK,UPDLOCK)
などをつけてるのを発見した。ビューのSELECT文にこんなのつけて何の意味がある
のかさっぱりわからない。ぐぐってもよくわからない。SQL Server 2000です。
982 :
NAME IS NULL:2008/04/02(水) 19:39:46 ID:7rgZDuiK
983 :
NAME IS NULL:2008/04/02(水) 19:41:04 ID:7rgZDuiK
↑すいません、SQLSERVER2005です。
>>981 Books onlineは検索したのか?
985 :
NAME IS NULL:2008/04/02(水) 21:20:15 ID:lPTIXeR8
>>985 NOLOCKとかROWLOCKとかはCastじゃなくてテーブルヒント。
BooksOnlineをNOLOCKで検索してFROM句とロックのヒントという項目を読め
PerlからSQL Serverにつなぎたいのですが、お勧めの
モジュール等ありましたらご教示ください。
お勧めといっても、選択肢は
1.Win32::OLEを使ってADOアクセス。
2.DBD::ADOドライバを使ってDBIアクセス。
3.DBD::ODBCドライバを使ってDBIアクセス。
の3つしかない。
1.はコード量が多くて汚くなるけど、自由度は一番高いんじゃないかな。
ActivePerlなら標準でついてくるというメリットもある。
2.はすっきりと書けるけど、バインド処理に不具合(回避可能)あり。
3.はODBCというだけで敬遠して使ったことないけど案外いいかも。
ちょっとしたSELECT程度なら、すぐに始められる1.でいいと思うよ。
989 :
NAME IS NULL:2008/04/03(木) 18:47:58 ID:bavQZfEk
>>986 ありがとうございました。解決いたしました。
結局、最後までBOOKS ONLINEに書かれていることは理解できませんでしたがw
>>988 非常に有益な情報、有難うございました。
本当に参考になりました。
個人的にはDBIがなれていて好きなので(Postgres等で
使用経験あり)、DBD::ODBCを使用してみようかと思って
おります。
有難うございました。