5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Microsoft SQL Server 総合スレ 4

1 :NAME IS NULL:2006/03/14(火) 14:53:03 ID:Is5CmAZN
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/

・過去スレ
Part1 http://pc5.2ch.net/test/read.cgi/db/1057061513/
Part2 http://pc8.2ch.net/test/read.cgi/db/1093012583/
Part3 http://pc8.2ch.net/test/read.cgi/db/1123981539/

2 :NAME IS NULL:2006/03/14(火) 23:24:34 ID:wdw0js8n
>1 乙

3 :NAME IS NULL:2006/03/15(水) 20:30:48 ID:???
オラが無償のDB開発ツール配布始めたけどMSでも出そうですかな?
VS2005Expressのアドインとかで

4 :NAME IS NULL:2006/03/15(水) 22:08:08 ID:???
>>3が自作ツール配ってんのかと思った

5 :NAME IS NULL:2006/03/15(水) 22:14:17 ID:???
>>4
違うの?

6 :NAME IS NULL:2006/03/16(木) 10:47:15 ID:???
Production機でNorthwindとpubsを残しておくなよヴぉけ

7 :NAME IS NULL:2006/03/16(木) 22:30:59 ID:EbpOc3DQ
DBについて全くの初心者です。
排他ロックについてお尋ねしたいのですが、
SQLでのテーブル単位やレコード単位のロックの方法はわかったのですが、
DB全体のロックの方法がわかりません。
どなたかご教授をお願いしたします。

8 :NAME IS NULL:2006/03/16(木) 22:44:30 ID:???
>>7
TABLOCK
ロック関係は初心者が手を出すとたいてい痛い目にあう箇所だから、
BOLのロックヒントのところをよく見ておくといい。

9 :7:2006/03/16(木) 23:16:02 ID:???
select * from テーブル名 with(tablockx,holdlock)
でテーブルのロックができると思いますが、
DB全体をロックするにはどのような構文になるのでしょうか?

10 :NAME IS NULL:2006/03/16(木) 23:19:55 ID:???
>>8
それ、テーブルロックでは

11 :10:2006/03/16(木) 23:21:31 ID:???
それ以前に、データベース(のインスタンス)をまるごとロックして
なにかいいことあるのかと尋ねてみたいが

12 :7:2006/03/17(金) 00:03:33 ID:???
データセンターにあるDBに複数のクライアントが
アクセスするシステムで、クライアントの1人が
DBを更新している時に他のクライアントはデータを参照・更新
できなくさせたいらしいのです。

13 :10:2006/03/17(金) 00:22:53 ID:???
あの…排他ロックって…わかって書いてる??

釣られたのか漏れorz

14 :NAME IS NULL:2006/03/17(金) 00:24:22 ID:???
もしかしてシングルユーザーモードで起動するってこと?

15 :10:2006/03/17(金) 00:27:35 ID:???
「データセンターにあるDBに複数のクライアントが
 アクセスするシステムで、クライアントの1人が
 DBを更新している時に他のクライアントはデータを参照・更新できないようにする」
のが排他ロックです。

ふつうはデータベースまるごとロックなんてしない
やり方ググったら出たけど、危ないからキミには教えない w

16 :7:2006/03/17(金) 00:48:03 ID:???
自分の日本語がおかしいかったようでうまく伝えることができず
申し訳ありませんでした。
教えないですか・・・ん〜、残念です。




17 :NAME IS NULL:2006/03/17(金) 01:16:12 ID:???
というかさ、みんな>>7がDBをロックできるかできないか知りたいんだから、
それ教えればいいじゃん。なんで、排他ロックの使い方が悪いとかそっちの話になるわけ??
まぁ、その話も必要だけど、それでも、DBロックできるか知りたいか聞いてるんだから、教えればいいじゃん。
ちなみに、俺はSQLServer触った事無いから、しらない。
頑張って、すべてのテーブルにロックかければ?



18 :NAME IS NULL:2006/03/17(金) 07:05:40 ID:???
>>5
これのことね
http://www.itmedia.co.jp/enterprise/articles/0603/14/news068.html

19 :NAME IS NULL:2006/03/17(金) 08:32:52 ID:???
>>7
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/evaluate/exercises.mspx
まずは、ここの「開発編 No.9 トランザクション編」を読んでね。

20 :NAME IS NULL:2006/03/17(金) 09:30:23 ID:???
>>18
dd

21 :10:2006/03/18(土) 12:27:55 ID:???
>>16-17
ロックによる書き込み衝突を絶対回避しなくちゃいけないぐらい
(コンサートチケット購入システムとか)じゃないかぎり、
デフォルトのままなんだよ。デフォは行ロックだけど、
ロックする行数が増えると、自動的にテーブルロックに切り替わる

明示的に、いきなりテーブルロックにするかどうか
というのが、設計者でも悩むぐらいなので
(大きくロックすると、ほかのひとが使えないので、全体のパフォーマンスがおちる)
特別な意味でもないかぎり、更新のためにデータベースごとロックなんて
ありえないんだよ。

データベースまるごとロック、は専用のシステムプロシージャがあるので
自分のプロシージャのなかでそれを呼び出すとできる
ただしトランザクション使って限定的にやるとかしないと危ないし
そのトランザクションの設定自体で間違えて「ロックがかかったまま」になりかねない。
できればやらないほうがいい。

そんなヤバいことしようとしてるのに、その「特別な意味」を>>7は教えてくれない
もしかすると、>>7が考えてるようなシナリオを、ほかの方法で回避できるかもしれないし
それをここの誰かが教えてくれるかもしれないし
なにしろやらないにことたことないんだよ。


22 :10:2006/03/18(土) 13:46:41 ID:???
>>21
× ことたこと
○ こしたこと

ここで知ってる人にしつもん
ロックの粒度でいえば行ロックのつぎはページロックなんだけど、
ロックエスカレーションの場合、どのタイミングで
どの粒度にいくか、ってなんか書いてある場所あるのかな?
ひきかたわるいのかもだけど、BOLにある場所わかってなくて^^;

というのも、ロックエスカレーションでは
いきなりテーブルロックとか、はてはDBロックがかかるんですよね?
(Updateクエリのwhere節がひっかける行数÷総行数で判断??)
条件さえよければ、インデックスロックでも済みそうな気もするのに…
自分で明示的に指定する場合はいいんだけど、
自動判断のチューニングってできんのかなぁ…

23 :NAME IS NULL:2006/03/19(日) 18:42:02 ID:???
>22
まず>19を読んだら?

24 :NAME IS NULL:2006/03/22(水) 22:18:40 ID:fuQNcWXy
>>22
エスカレーションの閾値とかは設定できないよ、SQL server 2000では。2005だと設定できるか知らんけど。

25 :10:2006/03/22(水) 23:29:38 ID:???
>>24 了解

自習書読んでも書いてなかったので


26 :NAME IS NULL:2006/03/23(木) 02:12:25 ID:???
ttp://msdn2.microsoft.com/ja-jp/library/ms172010.aspx
2005Mobileにだけあるみたい。
SET LOCK_ESCALATION 1000;

27 :NAME IS NULL:2006/03/23(木) 11:53:45 ID:jtgDaKQq
10000円ぐらいの本に
どれぐらいで六エスカレーションがおきるか
書いてたようなきがする

28 :NAME IS NULL:2006/03/23(木) 12:56:25 ID:???
ttp://www.amazon.co.jp/exec/obidos/ASIN/4891002603/
ttp://www.siebelonmicrosoft.com/assets/pdf/RedPaperSQLServerPerformanceTuningTipsForEnterpriseApps.pdf

29 :NAME IS NULL:2006/03/23(木) 13:31:24 ID:???
2005のBOLだけど
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ja/udb9/html/4a24489c-e38f-4d16-9c26-1ab3664cdcb6.htm


データベース エンジン は、行ロックまたはキー範囲ロックをページ ロックにエスカレートせず、
テーブル ロックに直接エスカレートします。
同様に、ページ ロックは常にテーブル ロックにエスカレートされます。

ロックのエスカレーションは、次のいずれかの時点で開始されます。
・1 つの Transact-SQL ステートメントが単位のテーブルまたは
 インデックスに対して 5,000 個のロックを獲得したとき。
・データベース エンジン のインスタンスのロック数がメモリまたは構成のしきい値を超えたとき。


30 :NAME IS NULL:2006/03/23(木) 20:10:34 ID:???
http://dl2.n1e.jp/DATA/MOVIE/1140722907/1140722907.jpg

31 :NAME IS NULL:2006/03/24(金) 14:10:01 ID:???
exchange serverを使わずにsql agentから警告をメールで通知する手段ってありますか?
agentを停止させてからoutlookを起動して〜とかやればいけるみたいですけど

32 :NAME IS NULL:2006/03/24(金) 16:32:46 ID:???
>>31
ジョブの作成してステップの作成で、ActiveXスクリプトをちょちょっと作ってやればいい。
具体的なやり方は「SQL Server 2000でいってみよう」のP166に書いてある。BASP21が必要だけど。
ぐぐればWeb上にもあるかもしれん。
2005ならデータベースメールが使えるらしい。

33 :NAME IS NULL:2006/03/24(金) 16:42:35 ID:???
>>32
さっそくその本を買ってみます
ありがとうございました

34 :NAME IS NULL:2006/03/24(金) 18:04:25 ID:???
ActiveX を使うまでもなく、xp_cmdshell でコマンドラインメーラーを叩くのが楽じゃね?

35 :NAME IS NULL:2006/03/25(土) 05:35:26 ID:???
>>32
2005ってメールできるんだ
ようやくそこまともになるんだなw

36 :NAME IS NULL:2006/03/25(土) 13:25:25 ID:zNp4bawA
年内の開発は、まだ2000を選択するよね?

37 :NAME IS NULL:2006/03/25(土) 18:30:24 ID:???
新規の案件は2005でやってるよ。

38 :NAME IS NULL:2006/03/27(月) 19:26:42 ID:5TsWkfRW
Microsoft SQL Enterprise Manager

Microsoft Corporation

バージョン: 8.0
のバージョンを使用しているのですが、これではフルテキスト(全文検索)
は対応していないのでしょうか?
テーブルを右クリックすると「テーブルのフルテキストインデックス」という部分が
使用できないようになっていて困っています。

39 :38:2006/03/27(月) 19:38:21 ID:???
失礼しました。
MS SQL SERVER 2000です

40 :NAME IS NULL:2006/03/27(月) 19:56:18 ID:???
対応はしているが、機能するかどうかはインストール時に指定が必要じゃなかったか?

41 :NAME IS NULL:2006/03/27(月) 21:20:46 ID:???
今、2000用のBooksOnline見てみた。
インストール時にフルテキスト検索をするかしないか、
するのであればどういうオプション(インデックスの置き場所とか)でインストールするか
決めるぽいなりよ。

42 :NAME IS NULL:2006/03/28(火) 14:46:29 ID:???
機能がインストールされているかどうかはEnterprise Managerの
「サポートサービス」枝から確認できる。

43 :NAME IS NULL:2006/03/30(木) 00:54:32 ID:???
Management Studioって重いね。
メンテってこれつかうしかないんだよね。

44 :NAME IS NULL:2006/03/30(木) 07:46:29 ID:???
>>43
とっても軽いSQLCMDがありますよ。

45 :NAME IS NULL:2006/03/30(木) 09:57:48 ID:???
>>43
.NETアプリだから。


46 :NAME IS NULL:2006/03/30(木) 14:09:41 ID:???
SQLCMDでsp_helpやsp_tableなどを使うと表示がめちゃくちゃで見れたものではないのだが、
なんかいい方法ないですか。

47 :NAME IS NULL:2006/03/30(木) 16:07:28 ID:???
>>46
クエリの結果をテキストに出力するとか。

48 :NAME IS NULL:2006/03/31(金) 12:53:16 ID:???
テーブルの一覧だけ作ってみました。
create view tab
AS
select
 cast(TABLE_SCHEMA + '.' + TABLE_NAME as varchar(50)) AS NAME,
 cast(TABLE_CATALOG as varchar(10)) AS CATALOG,
 cast('TABLE' as varchar(5)) AS TYPE
from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'BASE TABLE'
union all
select
 cast(TABLE_SCHEMA + '.' + TABLE_NAME as varchar(50)) AS NAME,
 cast(TABLE_CATALOG as varchar(10)) AS CATALOG,
 cast('VIEW' as varchar(5)) AS TYPE
from INFORMATION_SCHEMA.TABLES
where TABLE_TYPE = 'VIEW'

49 :NAME IS NULL:2006/04/03(月) 12:28:35 ID:kIg6E8cf
SqlServer 2005 WorkGroupエディションって、データベースのコピーができないのですか?
Sysadminのメンバーでログインして(Windows認証)で、ウィザード起動してその通りやっても、
最後で
「@subsystem_name('SSIS')が存在しません。」
 「プロキシ アカウントを指定してください」
とか怒られるわりには、プロキシアカウントをどこで指定しろと?



50 :NAME IS NULL:2006/04/03(月) 17:00:07 ID:???
SQL Server 2000, 2005 MSDE などがインストールされているかどうかを
判断する方法はないでしょうか?

例えば、あるレジストリが存在する場合はインストールされている、など。

インストールされている/いないを確実に判断する方法があれば
教えてください。

51 :NAME IS NULL:2006/04/03(月) 20:43:38 ID:???
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

52 :NAME IS NULL:2006/04/04(火) 12:54:51 ID:TvtM7foX
そろそろ運用している所もあると思うが
2005の使用感、その他諸々は
いかがなもんでしょうか?

53 :NAME IS NULL:2006/04/04(火) 18:19:35 ID:???
Management Studio は重いけど、操作性は良好。バグが少々。
BI 機能の進化は素晴らしい。
けど KPI のアイコン表示だとか課題があるから真価を発揮するのは 2007 Office が出てからだと思う。
Visual Studio 2005 との統合で、ソリューションやプロジェクトの単位で
作業可能にになったのが嬉しい。


54 :NAME IS NULL:2006/04/04(火) 18:29:27 ID:???
SQL鯖2005で質問させてください。

CLRを使ったストアドプロシージャ開発をしているのですが、
セキュリティの設定が悪いのか、プログラム内でコネクション張ろうとしただけで例外が発生してしまいます。

マイクロソフトが提供しているサンプルプログラムでも同様なので、
どこかの設定が抜けてるのかと思うのですが…

どなたか上手くCLRでコネクション張れた方はいらっしゃらないでしょうか?

55 :NAME IS NULL:2006/04/04(火) 18:47:15 ID:ly+yMBFO
Like句で教えてください
3つのカラムの中で「A」と「B」という語句を抽出したいときLike句を使おう
と思っていましたが、うまくいきません。

「A」だけとか「B」だけなら問題ないのですが、Like '%A%' and '%B%'という
文ではダメなので、どうやって書けばいいのでしょうか?

条件は「A」だけとか「B」だけという事もあれば両方使われる場合もあります。
お願いします

56 :NAME IS NULL:2006/04/04(火) 18:49:56 ID:???
>>54
構成ツールのセキュリティ構成でCLRをオンにする。
オンになってるならPERMISSION_SETをいじる。
CREATE ASSEMBLY ... WITH PERMISSION_SET = 
このあたりでどうですか?


57 :NAME IS NULL:2006/04/04(火) 18:52:37 ID:???
>>55
xx LIKE '%A%' OR xx LIKE '%B%'

>>56
>CLRをオンにする。
訂正 CLR統合をオンにする。

58 :52:2006/04/04(火) 20:14:44 ID:???
>>53
ほほー、なるほど。
>Visual Studio 2005 との統合で、ソリューションやプロジェクトの単位で
>作業可能にになったのが嬉しい。
この辺りは早く試してみたいですなー。
とりあえず、ありがとう。



59 :54:2006/04/05(水) 00:26:40 ID:???
>>56
レスありがとうございます。
CLR統合をオンにするは実施済みなのですが、パーミッション系に問題がありそうなので、
ご指摘のPERMISSION_SETまわりを見直してみます。


60 :NAME IS NULL:2006/04/05(水) 16:58:23 ID:???
Management Studio Expの正式日本語版まだ〜?

61 :NAME IS NULL:2006/04/06(木) 17:18:58 ID:???
MSSQL2000のAvailabilityをレポートするツールでFreeのものとかあります?

62 :NAME IS NULL:2006/04/07(金) 16:36:04 ID:???
uniqueidentifier型のカラムにADOでGUIDを登録したいのですが
rs.Fields("hoge").value = "4324-34342-4-2343-32-4"
のような感じで。
しかし、型が違うので登録できません。
GUIDをuniqueidentifier型に登録する方法がありましたら
教えてください。

63 :62:2006/04/07(金) 17:25:01 ID:???
事故解決しました。
rs.Fields("hoge").value = "{4324-34342-4-2343-32-4}"

64 :NAME IS NULL:2006/04/07(金) 18:56:17 ID:5O1JP5O4
SQLDataAdapterを使ってインサート文を投げているのですが、
行数が多くてタイムアウトしてしまいます(;´д`)

回避する手段は無いでしょうか?

65 :NAME IS NULL:2006/04/07(金) 19:55:32 ID:???
>>64
タイムアウトはどこで起きてますか?
この手の質問で実はASP.NETでタイムアウトが起きてたという落ちが多いけど。

66 :64:2006/04/07(金) 21:02:04 ID:???
>>65
.netのタイムアウトもあるのですか!?
updateしているところでタイムアウトしてるようなのですが…

.netのタイムアウト設定はどこをみれば変えられるのでしょうか?

67 :NAME IS NULL:2006/04/07(金) 21:30:22 ID:???
>>64
どこでどういうメッセージが出たからタイムアウトと判断したか具体的に示せということだな。
それからSQL Serverや.NETのVersionや言語、ASP.NETかどうかなど。
推測で答えたらきりがないだろう。

68 :NAME IS NULL:2006/04/07(金) 22:52:15 ID:???
>>インサート文を投げているのですが
>>updateしているところでタイムアウトしてるようなのですが… 
はは、こやつめ

69 :NAME IS NULL:2006/04/08(土) 20:12:03 ID:cS1HhYAx
>68
insertはSQLで
updateはミドルウェアのメソッドだろ。
まあ、ちゃんと書いていない>66が悪いんだが。
つーか、区別がついてないんだと思われ。
>66は日本語じゃなくてコード書け。

70 :NAME IS NULL:2006/04/08(土) 23:40:42 ID:???
.netのSqlCmmandオブジェクトのクエリタイムアウトはデフォルトで30s
リフレクションで調べたら、ソースに直に書いてあったorz
時間のかかりそうなsqlについては毎回クエリタイムアウトを設定するしか…

71 :NAME IS NULL:2006/04/09(日) 00:50:01 ID:???
>>70
SqlDataAdapterはDataSetの中を見てinsert対象だったら1件ずつInsertCommandを実行するはずだから、
挿入件数がいくら多くても1件当たり30秒の制限は超えないと思うのです。
だからデットロックの1205エラーを疑っていました。
エラーメッセージの詳細がほしいというのはこの辺を確認したかったからです。

72 :NAME IS NULL:2006/04/10(月) 01:26:29 ID:???
データベース、あるいはテーブルを、中身のレコードをのぞいて定義だけ
コピーしたいんですがどうしたらいいですか?
GUIじゃなくてSQLDMOとかストアドとかのコードで実現したいです。

73 :NAME IS NULL:2006/04/10(月) 03:51:33 ID:???
>72
1. コピー元データベースをバックアップ
2. コピー先データベースにリストア
3. コピー先データベースの全テーブルTruncate

74 :NAME IS NULL:2006/04/10(月) 12:37:35 ID:???
>>72
テーブルなら
select * into DEST from src where 0=1

制約類は付いてこないので、必要なら別途コピー。

75 :NAME IS NULL:2006/04/10(月) 19:02:10 ID:1xKUAW09
丁度>>72氏と同じとこで迷ってたとこです。
GUIでもコマンドでもいいので、手っ取り早い方法はないでしょうか?

>>73氏の方法はIdentity列のシードが1に戻らないため、戻すのに
Identityの再設定が逐一必要になるのが少し難で。

76 :NAME IS NULL:2006/04/10(月) 19:13:03 ID:???
DBCC CHECKIDENT

truncate table
だけでいいだろ > identity


77 :NAME IS NULL:2006/04/10(月) 19:38:53 ID:???
>>72です。どうやらSQLDMO.TableやDatabaseにScriptというメソッドがあって、
それでCREATE *** SQL文を作成できるので、あとはDatabase.ExecuteImmediate
(SQLServer.ExecuteImmediate)すればいいみたいです。さっき見つけました。
Scriptの引数でインデックスその他の作成SQLも作れるようです。


78 :NAME IS NULL:2006/04/11(火) 09:25:54 ID:???
やっぱりテーブル1つ1つDBCC CHECKIDENTやってくしかないか。

みなさんありがとうございました。

79 :NAME IS NULL:2006/04/11(火) 09:32:08 ID:???
っと、目が節穴だったようだ。
>>77
ちょい調べて試してみます。マジ感謝。

80 :NAME IS NULL:2006/04/11(火) 13:11:12 ID:???
バックアップに関して教えてください

DBの中に
システムの設定などに関するテーブルと
売り上げなどに関するテーブルがあって

バックアップをとって復元したいのですが
設定のテーブルだけ値を戻したいとき
(売り上げまで元に戻すとおかしくなるので)

ファイルグループで
復元したいテーブルとそうでないテーブルを
ファイルで分けて復元するとできるのかなと
思いましたが、他に方法何かありますでしょうか?
バージョンは特に指定なしで

81 :NAME IS NULL:2006/04/11(火) 16:09:37 ID:???
いや、指定しろよ。

82 :name is null:2006/04/11(火) 16:35:12 ID:???
板違うかもしれませんが教えてください。

下記の命令をASPに組み込み、ACCESSを読むように設計しましたが、
エラーになってしまいます。
DBがオープンできないようなのですが・・・
分かる方、いらっしゃいましたら教えてください。

Set db=Server.CreateObject("ADODB.Connection")
db.Provider = "Microsoft.Jet.OLEDB.4.0"
db.ConnectionString = Server.MapPath("test.mdb")
db.open

よろしくお願いします。

83 :NAME IS NULL:2006/04/11(火) 16:58:59 ID:???
http://support.microsoft.com/default.aspx?scid=kb;ja;264691

84 :name is null:2006/04/11(火) 17:37:24 ID:???
83さん
OKです。ありがとうございました。

85 :白馬の玉子 ◆PqSzNbkqDo :2006/04/11(火) 18:46:08 ID:???
>>80

ローテクだけど、BCPを実行させるWinUIでも作成すれば???

おいらは、BCPツール、自分で作って、最終手段用として
活用してるけどね。
自作だけど、結構役に立つ。

BCPって、id&Keyがずれるから、他テーブルとRel張ってるときは、
要注意だけど。
大昔、そのせいで、データが泥沼になったことある。
いまは、id&Keyは、更新系のメソッドやSPでしか使用しないな。

RelationKeyの親子が、DBから独立して独自の方式になっていて、
制約とかとくにかけてないなら、BCPでファイルに落とすのが一番わかりやすいかもね。



86 :NAME IS NULL:2006/04/11(火) 21:02:59 ID:kfLJ9dky
質問。
一度の処理で4万行ほど更新するプログラムなんだけど、
処理途中でタイムアウト起こすんですよ。
VS2005+SQLServer2005なんだけど、SQL CLRでタイムアウトの設定ってどこでできますかね。

87 :NAME IS NULL:2006/04/11(火) 21:46:46 ID:???
>>86
>>64-71 あたりを参考に
SqlCommand.CommandTimeout

88 :86:2006/04/11(火) 23:54:49 ID:kfLJ9dky
>>87
ありがとうございます。
100未満のレスくらいきちんと読めって話ですよね(汗)

89 :NAME IS NULL:2006/04/12(水) 14:58:42 ID:???
すみません、少し古いですがSQL Server7についての質問です。
多分最新版でも仕様は同じと思いますが…。

データベースのプロパティなどで見れる割り当て済領域のところの、
使用容量は、テーブル以外のビューやストアドプロシージャなどの容量もはいりますよね?

後、データベース保守計画で、データベース全体のバックアップにしてる場合も、
ビューやストアドプロシージャなどもバックアップ取ってくれるのでしょうか?

すみませんが、知ってる方よろしくお願いします。。。

90 :NAME IS NULL:2006/04/12(水) 15:05:03 ID:???
>>89
多分取ってくれるだろうけど保障はできないし、万が一消えても
責任は取れない。ダミーのデータベース作って実験してみたら?

91 :白馬の玉子 ◆PqSzNbkqDo :2006/04/12(水) 17:34:56 ID:???
>>89

完全バックアップすれば、データベース1つがまるまる
バックアップ可能っすよ。そのまんまのスナップショットです。
で、復元すれば、そのままの状態で再稼動できます。

俺は、ファイルに都度、保存しています。
開発途中なんかは特に。

論理ファイル名と物理ファイルパスが、復元のときにめんどくさいかも
しれんけど。


92 :NAME IS NULL:2006/04/12(水) 23:34:09 ID:???
お邪魔します。
まったくの初心者なのですが金曜からSQLをやってもらうと言われたので
現在コマンドプロンプトでOSQLのサンプルを打ってるんですがSQLにも種類が
あるんでしょうか?場合によってはOSQL何てやっても役に立たない事になるんでしょうか?
よろしくお願いします。

93 :NAME IS NULL:2006/04/12(水) 23:41:46 ID:???
>SQLにも種類が あるんでしょうか?

すみません。この板見ただけでも種類があるのは明らかですね・・・
OSQLは無駄かどうかだけ教えてください。

94 :NAME IS NULL:2006/04/13(木) 00:10:42 ID:???
>>93
MSSQL2000にくっついてくるosql.exe のこととして話をすれば、
OSQLはSQLコマンドインタープリタの名前でSQLの種類のことではない。
MSSQL用のSQLおよびストアドプロシジャ記述用の言語のことはTransact-SQLと呼んでいる。
MSSQL2000には同様のコマンドインタープリタとしてisql(CUI用)とクエリアナライザ(GUI用)が付属している。
isql と osql はきわめてよく似ているがサーバーとのインターフェイスにodbcを使っているのがosqlの特徴。
普通はクエリアナライザとisqlで十分なのでosqlをあえて使うことは少ない。

95 :白馬の玉子 ◆PqSzNbkqDo :2006/04/13(木) 13:55:33 ID:???
>>92

osqlで勉強って・・・・・無駄ではないけど、根性いりますよね。
プログラマとして「SQLをやる」っていうのなら、
osqlもisqlも、よほどのことがない限り、使用しないツールだともいます。
それに、効率悪くて、人件費が無駄です。

製品版購入してもらって、クエリアナライザとかで勉強してください。
MSDE+Accessっていうのもあるけど、あまりおすすめしない。



96 :NAME IS NULL:2006/04/13(木) 14:29:42 ID:???
デバイス '***.TRN' のメディア ファミリが正しい形式ではありません。
SQL Server はこのメディア ファミリを処理できません。

といわれてトランザクションのバックアップが失敗してたんですが、
これってTRNファイルが壊れてたって事ですか?

97 :89:2006/04/13(木) 15:45:41 ID:???
>>90-91
さんくすです。

>ダミーのデータベース作って実験してみたら?
ユーザー先のDBなんでダミーとか作れないんです(´・ω・`)

指定DBをDATにバックアップ取りたいようなんで、
データベース保守計画でバックアップファイルを作成
             ↓
時間を置いてそのファイルをDATへのバックアップジョブ

って感じでいきたいと思います。

さんくすです(・∀・)

98 :NAME IS NULL:2006/04/13(木) 18:22:09 ID:ygeagWMC
アナライズサービスを触っているのですけど、キューブの生成時にログオンに失敗しましたって言われます(;´д`)

データソースにはきちんとアクセスできてテーブルも取得出来ているのですが…

キューブを作る際のアカウント情報は別にあるのでしょうか?

99 :NAME IS NULL:2006/04/13(木) 20:07:10 ID:???
>>94>>95
ありがとうございます。
osqlは買った本に付いてたんで仕事終わって家でちょくちょく打ってました
今日教えてもらったらクエリアナライザってのでした。
又質問すると思うけどよろしくお願いします。

内の部署SQLやった事ある人居ないんで・・・(他部署にはゴロゴロいるけど部署間の対立で借りは作りたくないらしい・・・

100 :NAME IS NULL:2006/04/14(金) 00:17:59 ID:???
うまく教えてもらって部署間の和解のきっかけになりなよ。

101 :白馬の玉子 ◆PqSzNbkqDo :2006/04/14(金) 09:36:49 ID:???
>>97

ファイルに一度バックアップをとれるなら、
そのファイルをどこにでも持っていけるし、
どのSQLサーバに復元もできるから、
安心だよね。

直接DATへのバックアップだと、
バックアップの小技をいろいろ習得しないと、
うまく復元できなくなることあるっすよん。


102 :NAME IS NULL:2006/04/14(金) 21:09:37 ID:???
遠距離のレプリケーションをもっと簡単に設定できればいいのに
バックアップ目的にレプリケーション使いたいんだけどよくわからん

103 :NAME IS NULL:2006/04/15(土) 10:49:05 ID:???
>102
ログ配布は?

104 :NAME IS NULL:2006/04/17(月) 22:03:00 ID:89jdluih
text型にすると、そのフィールドはLIKE演算子で検索できなくなってしまうのでしょうか?
また、他にも制約がありますか?
8000バイトを超える文字データを格納しなければならなくなったのです。

105 :104:2006/04/17(月) 22:09:16 ID:89jdluih
すいません、LIKEは大丈夫でした。
varchar型からtext型に変更しようと思うのですが、
気をつける点はありますか?

106 :NAME IS NULL:2006/04/17(月) 22:38:47 ID:???
つ SQL Server 2005

107 :NAME IS NULL:2006/04/18(火) 00:02:02 ID:???
varchar(max) と textの違いがいまいちわからんね

108 :NAME IS NULL:2006/04/18(火) 12:18:20 ID:???
つうか、もうtext使う意味は無い。
将来バージョンでは廃止だってよ。

109 :NAME IS NULL:2006/04/18(火) 20:34:52 ID:???
お邪魔します
一定の間隔で入っているデータを抽出するのに今まではwhere句で
列名 % 3 = 0
などで取っていたのですが取りたいID(主キー)が奇数と偶数混じっている場合どうすればいいのでしょうか?
具体的には1〜22で1,6,10,14,17を取りたいのです。

110 :NAME IS NULL:2006/04/18(火) 20:38:24 ID:???
in

111 :白馬の玉子 ◆PqSzNbkqDo :2006/04/19(水) 12:58:57 ID:???
>>109

まず、基本的な問題提起として、

・式を用いて導き出せる集合

なのか、

・絶対値を指定しなければ導き出せない集合

なのか、
はっきりしなさいな。

そのどちらかによって、解法なんてまったく違うでしょ?

データの分析と管理の手法の検討が未熟なのかもよ!

・・・・つーか、該当レコードのみにフラグ立てるフィールド増設すれば???

規則性のない一定間隔(規則性が崩壊する一定間隔)、ってのが、非常に意味不明。
それって、設計ミスでしょ?


112 :NAME IS NULL:2006/04/19(水) 22:33:02 ID:???
もう2005はSP1が出るのか
ようやくManagement Studio Expressの正式版がでるのが嬉しい
http://itpro.nikkeibp.co.jp/article/NEWS/20060419/235721/

113 :109:2006/04/20(木) 19:47:46 ID:Uvn6Jss0
レス遅れ、説明不足すみません
・式を用いて導き出せる集合
らしいので in は使うのはダメらしいです・・・SQL初めてなんで研修中です
今日もこの問題考えてたけど進まなかった・・・アドバイス頼みます

114 :NAME IS NULL:2006/04/20(木) 20:18:48 ID:???
だから、どういう式なのかと。

115 :NAME IS NULL:2006/04/20(木) 22:38:34 ID:???
どういう式でもいいケド
式を用いて導き出せるんならFUNCTION使えばいーじゃん
TABLEで返せんだし

116 :白馬の玉子 ◆PqSzNbkqDo :2006/04/21(金) 01:33:13 ID:???
>>114, 115

式は109さんが、ご自分でお考えになるのでは?

がんばってね、109さん。


117 :115:2006/04/21(金) 21:21:52 ID:???
なんとーーーー!!!(シーブック風味)
式を考えてくれってことだったのかw
SQLServerどころかクエリも関係なかったのかww
釣られた…orz

118 :NAME IS NULL:2006/04/22(土) 14:24:54 ID:uIJlO8DR
ストアドではなくて、裸のTransact-sqlブロック(begin..endのやつ)のなかで
関数定義することってできないのでしょうか?
OracleのPL/SQLブロックならできるのですが‥
書き込み権限のないDBからデータを拾う開発しているのですが、
ちょっとした処理を関数にまとめたく思っています。


119 :118:2006/04/22(土) 14:28:09 ID:uIJlO8DR
環境書き忘れました。
DBはSQLServer2000および2005です。

120 :NAME IS NULL:2006/04/22(土) 15:01:48 ID:uIJlO8DR
ぐぁ。transact-sqlの begin .. end って
スコープを形成しないんでしょうか!?
「変数名 '@i' は既に宣言されています」ってなによ、それ…
(なにかいいやり方ありませんか?)

121 :NAME IS NULL:2006/04/22(土) 15:57:24 ID:???
exec sp_executesql N'declare @i int 〜'

122 :120:2006/04/22(土) 16:25:06 ID:uIJlO8DR
>121
サンクスコです。やってみました。スコープ化されました(いちおう)
しかしなぁ…

話は変わりますが、
動的SQLで、テーブル型の変数をOUTPUTすることはできないでしょうか?
実は118=120=私ですが、それができればストアドを使わずに
テーブル変数を返す関数みたいなものができそうです。

123 :NAME IS NULL:2006/04/22(土) 18:41:19 ID:???
ためしにreturnしてみて

124 :122:2006/04/22(土) 22:41:13 ID:uIJlO8DR
>123
レスありがとうございます。
いや、Create function権限のないDBなので
関数作れず、そもそもreturnできないのです。
とはいえ特定の手続きを「関数的ななにか」でひとまとめにしたい、と。
そこで苦し紛れに動的SQLを関数とみなし、
OUTPUTパラメータで戻り値(?)を受け取ろうかと思った次第。

一昨日までオラクルやってたので、変数スコープがグローバルだとか
ストアドにしないと関数作れないとか、ショッキングなことが多いです。
SQLServerってこんなにもショボいのでしょうか。
がっくしきてます。。む〜

125 :NAME IS NULL:2006/04/22(土) 23:17:13 ID:???
table変数が動的SQLに渡せないぽいので、やむなく一時テーブル
(それも#じゃだめで##使わなきゃいけない)使ってまつ。

126 :NAME IS NULL:2006/04/23(日) 00:01:45 ID:PR6fh/Ea
>125
答えじゃないんだけどね、グローバル一時テーブルはあまりよろしくないので…。
親ストアド側でCREATE TABLE #〜ってやれば
一応グローバル一時テーブル使わなくてよくなる。
子ストアドは親ストアドで作った一時テーブルは見れる。
同じセッションだから。
複数テーブル使って一時テーブルレイアウトを作ってるんなら、
CREATE TABLE #テーブル名
SELECT 何とか
FROM 何タラ JOIN ほげほげ
WHERE 1=0
みたく、FROM句で全部JOINしちまって、
WHERE句はFALSEになるような条件かいときゃおけ。

127 :kunn:2006/04/23(日) 00:20:01 ID:Q9J4SzPn
ファイルが削除できません
どうすればいいんでしょうか?


128 :124:2006/04/23(日) 00:30:07 ID:xSEwEA49
一時表もストアドも作成権限のないDBで
なんとかそれをやる方法ってないでしょうか?
裸のtransact-sqlブロック(バッチっていうの?)で関数作りたい、って
それだけのことなんですが…
(*)せめて変数をスコープ分けしたいのだが。。

129 :NAME IS NULL:2006/04/23(日) 00:57:16 ID:???
>128
ん?一時テーブルもストアドも作成権限がないDBで…ってことは、
プログラム上でスコープ分けたいってこと?
ストアド、ストアドっていってるけど、
ストアドプロシージャのことかストアドファンクションのことか
どっちもなのかもよくわからんようになってきたが…。

そもそも、レスポンスはどーでもいいシステムなの?
そうじゃなきゃ、一時テーブルぐらいは許可してもらえよ。
SQLServer使ってて一時テーブル使わねぇなんてもったいなさ過ぎるよ。

130 :NAME IS NULL:2006/04/23(日) 01:11:08 ID:???
基本的な質問で申し訳ない
テーブル作成権限ないと、一時テーブルって作れないの?

てか、>>128はストアドの権限もないって
それじゃなにも始まらない気がするんだけど…

131 :NAME IS NULL:2006/04/23(日) 01:23:43 ID:PR6fh/Ea
>130
えーっとね、たしか、guestでも一時テーブルは作れる。
けど、>128の場合、プログラミング規約上作れないってことじゃなかろうか。

132 :124:2006/04/23(日) 01:42:41 ID:xSEwEA49
> 129,130,131
どもです。
ええ、他部門がさらに外注に出して納品してもらったシステムのDBで
勝手にオブジェクト作ると保証がなくなるとのことです。
権限的には該当テーブルのみ Grant selectしてもらってるかんじ。
ただ、データだけは拾って簡単な自作のビューアに表示させたいのと
自部門のOracleに転送したいので、、、

>129
ストアドはプロシージャでもファンクションでもどちらでも構わないですが
要は定型処理部分をひとまとめにして箱に入れたいという意味です。
それこそ古いベーシックとかの Go Sub程度の機能でもないよりは、いい。(ローカル変数使えればね)
パフォーマンスはバッチ処理主体なのであんまり求めてないです。


133 :NAME IS NULL:2006/04/23(日) 01:49:38 ID:???
ストアドではなく、スクリプトファイルを作成し、
isql等から実行したいということ?

ローカル変数のスコープ範囲はバッチ内。
スクリプト内に複数のバッチを作成することができる。
各バッチはgoステートメントで区切られる(begin endではない)。



134 :124:2006/04/23(日) 02:19:32 ID:xSEwEA49
>>133
そうです (^^)。その通りです。
クライアントは C#で書いたやつとisql(UNIX版のやつですが)です。
SQLServer内のテーブルに対して、スクリプト内で生成した
特定のレコード(テーブル型変数に格納している)とJOINしたかったので
そんな感じのスクリプトを書いたと。
で、その「スクリプト内で特定のレコードを生成する」というところが
複数あるので、作業用の変数がばらばらとウザいから
それぞれ関数化してまとめる事がしたかったのですが、そこで躓いたわけです。
…goで区切っちゃうとスコープを作るというより、完全に分断されちゃいますよね?
(各スコープで値の受け渡しができない)

135 :NAME IS NULL:2006/04/23(日) 09:10:02 ID:???
>134
ストアドといっていたのは、Oracleで言うところのPL/SQLのことか。
SQLServerではTransact-SQL(T-SQLでも通じる)というので、
その辺混同しないように。

あと、一時プロシージャというものも作れる。
一時プロシージャを使えば何とかなるんじゃないかな。

136 :NAME IS NULL:2006/04/23(日) 09:35:46 ID:???
>goで区切っちゃうとスコープを作るというより、完全に分断されちゃいますよね?
>(各スコープで値の受け渡しができない)
そりゃ、ローカル変数の対象はバッチ内だから
他のバッチの値は参照することができないね。
ローカル変数を定義したかったんじゃなかったっけ?
>(ローカル変数使えればね)

だからgoで区切って

バッチ内の参照のみ→ローカル変数を使う
declare @i int
select @i = 1
print "@i = %1",@i
go
declare @i int
select @i = 3
print "@i = %1",@i
go

他のバッチの変数にアクセスしたい場合は、
テンポラリテーブルを作成し、参照すればok
declare @i int
select @i = 1
select @i i into #i_temp
go
declare @i int
select @i = i from #i_temp
print "i= "+ convert(varchar,@i)
go

##が必要なのは、動的SQLはsp_executesql 内で実行される。
ストアド内で作成される#の一時テーブルは、ストアド終了した
時点でドロップされる仕様だから。

バッチスクリプトで一度作成したテンポラリテーブルは
そのスクリプト内ではinto句で再作成できないから、
一旦ドロップするといいよ。
IF OBJECT_ID('tempdb..##i_temp') is not null
BEGIN
 DROP TABLE ##i_temp'
END
select @i i into #i_tmp


137 :124:2006/04/23(日) 14:36:36 ID:xSEwEA49
>>135
ありがとうございます。「ストアドではなくて、裸のTransact-sqlブロック」と
言ってみたりしたのですが紛らわしかったですね。なんて呼べばいいのかよく分からなくて…
例えばオラクルの場合はストアド(プロシージャ|ファンクション)にしなくてもPL/SQL内で

declare
  /* PL/SQLの場合、ストアドにしなくてもファンクションを作れる */
  function get_i return number is
    i number := 1;
  begin
    return i;
  end;
begin
  dbms_output.put_line(get_i());
end;

という感じに、そのバッチ(or スクリプト?)内のみで有効となるfunctionを
組むことができるのですが、SQLServerにはそれ相当の機能ってないのかなぁ、って思ったわけです。
一時プロシージャってあるのですね!調べてみます。


138 :124:2006/04/23(日) 14:37:44 ID:xSEwEA49
>>136, 131
ありがとうございます。一時テーブルってcreate table権限なくても作れるのですね!! 知らなかった!
#tablenameがセッション固有で、##tablenameがトランザクション固有みたいになるのかな?
場所がtempdbに出来るようなので、作れるサイズの最大容量って事前に調べておいたほうがよいのでしょうか?
dropに関しては、同じセッション内では消えないので明示的にdropする。
いずれにせよセッション終了時に自動的に消滅するので後片づけは気にしなくてよい、という理解でよいでしょうか。
ともあれ、値の受け渡しには一時テーブルをつかうのがSQLServerのコンセプトみたいですね!助かりました。


139 :124:2006/04/23(日) 17:34:43 ID:xSEwEA49
ありがとうございました。一時プロシージャと一時テーブルで
Management Studioからうまくいきました。
が、ADO.NETのSqlDataAdapterは Go を含むクエリを渡すとエラーになってしまうようです。
これは別の方法を考える必要があるのかな。

それと、125さんの記事にもありましたが、
ストアドプロシージャから#の一時テーブルに書き込むのはできなくて
##の一時テーブルならOKなのは仕様なのでしょうか?
with execute as callerとか付けてみましたがあまり関係なしみたい。
ストアドにはセッションIDみたいのが伝わらないってことなのかな?

140 :NAME IS NULL:2006/04/23(日) 17:53:28 ID:???
ADOとかADO.NET使うなら、GOはいらんぬ。

一時テーブルや一時ストアドプロシージャは
接続しているDBに一時的に作るのではなく、
tempdbってDBに作られる。
tempdbは基本的にアクセス権限publicで使えるようになっている。
だから、一時テーブルなどは誰でも作れる。そゆこと。

セッションについてはBooksOnlineを読むがよろし。
あと、SQLServerでは
INSERT INTO #一時テーブル
EXEC ストアドプロシージャ
みたいなことができる。利用するがよろし。

141 :124:2006/04/23(日) 18:17:09 ID:xSEwEA49
>>140
どもです。ADO.NETに関してはSqlDataAdapterではなくてSqlCommandで
GO入れずに個別に実行したらできました。これは私の不勉強です。すんまへんです。
SQLServerは一時テーブルを活用していくのがポイントと思えばよいでしょかね。
もちっとがんばってみます。ありがとうです。

142 :NAME IS NULL:2006/04/23(日) 18:33:55 ID:???
なんか、めちゃくちゃな素人が、めちゃくちゃ言ってるなー。
オラクルもまともにわかってないんじゃないのか?


143 :NAME IS NULL:2006/04/23(日) 18:35:28 ID:???
ADO.Netの質問するなら、そっちのスレで聞いてよ。
どうせメンバーは被ってるんだろうけど、
本質的に別の技術だから。

144 :NAME IS NULL:2006/04/23(日) 22:25:12 ID:???
>>137
その機能はない。
Transact-SQLはPL/SQLとはだいぶ設計思想が違うから、
PL/SQLのことは一度忘れてTransact-SQLを基礎から学んだほうがいい。
PL/SQLが独立した言語として作られているのでいわゆる第3世代言語的な構造を持ってるのに対して、
Transact-SQLはあくまでSQLの拡張という位置づけで
第3世代言語的なプログラミング構造を期待するならクライアントの言語でバンバンしろということ。
Transact-SQLはストアドプロシジャやファンクションが結果セットを返したりする。
この結果セットやtable型やtempテーブルなどをうまく使ってデータを表形式のまま加工するのがTransact-SQL流。

145 :NAME IS NULL:2006/04/24(月) 03:41:53 ID:BlzOwYBc
連結OLEオブジェクトに.bmpのパスをかいて画像を取り込もうとしてます。mdbでは可能ですが、adpだと動作しません。連結OLEオブジェクトにもってこれないようです。仕様上どうしても取り込む必要があるので頭抱えてます。何かいい方法ありますか?

146 :NAME IS NULL:2006/04/24(月) 11:33:15 ID:???
T-SQLはバッチではなく、ストアドを使用すれば、
構造化的プログラミングは可能。

>>144の様にPL/SQLはストアドで
SLECT文の結果セットが返せないので、
そこがつらい。
(SELECT 〜INTO output変数 ということではない)

実際、PL/SQL表の受け渡しについては、
Oracleから外に出力するとき(sqlplusに出力したり、
クライアントプログラムに渡す場合)
にいろいろ手間がかかる。

147 :NAME IS NULL:2006/04/24(月) 17:25:09 ID:???
>SLECT文の結果セットが返せないので、

SELECT文の〜


148 :NAME IS NULL:2006/04/25(火) 00:49:23 ID:???
>>145
ttp://msdn2.microsoft.com/ja-JP/library/ms160754(SQL.90).aspx


149 :NAME IS NULL:2006/04/26(水) 11:48:15 ID:???
皆さんの知恵を拝借させてください。

LDFの容量がでかくなりHDD残り領域がかなり無いので、
調整したいのですが、ログ切り離し後、データベース圧縮でOKですか?
それを実行でトランザクションログ領域が圧縮されるのですか?


150 :NAME IS NULL:2006/04/27(木) 02:53:08 ID:???
>>149
ログのバックアップ後に
データベース圧縮(DBCC SHRINKDATABASE)、もちろんEMからの操作で可。
ログファイルだけピンポイントに圧縮したいならDBCC SHRINKFILEを使う。


151 :149 ◆v.TAYcWkbs :2006/04/27(木) 13:20:33 ID:???
>>150
指導ありがとうです。
Transact SQLですね?色々試行錯誤してみます。



152 :NAME IS NULL:2006/04/28(金) 10:08:58 ID:???
DTSパッケージの定期ジョブがSysadminのメンバが所有者だと失敗して、そうじゃないユーザが所有者の時は成功します。
この場合の原因って何か心当たりのある方いらっしゃいますか?

SQLAgentはローカルシステムアカウントで起動されており、プロキシユーザを設定しています。

153 :NAME IS NULL:2006/04/29(土) 00:15:51 ID:HcJcvsY9
>152
失敗という判断の根拠は?

154 :NAME IS NULL:2006/04/29(土) 08:40:28 ID:???
質問です。
SQLServerのmdfファイルって、DBMS稼働中はコピーできませんが、
WindowsXPや2003のバックアップを使うと、稼働中でもシャドウコピーを作って、
バックアップしてくれるのでしょうか?
よろしくお願いいたします。

155 :NAME IS NULL:2006/04/29(土) 10:03:31 ID:HcJcvsY9
>154
なんでntbackupを使うことを思いついて
SQLServerが持っているバックアップ機能を使おうとしないのか

156 :NAME IS NULL:2006/04/29(土) 13:12:46 ID:???
SQL2000トラブルです。です。

トランザクションレプリケーションでログリーダーが急に動かなくなりました。
原因は不明です。
エージェントを開始してもエラーで終了してしまいます。
sp_replcmdsを実行できませんとエラーが表示されます。

エラー詳細を見ると以下のエラーです。
レプリケーションに失敗しました。ファイル 'T:\shiloh\sql\ntdbms\srvrepl\src\replicat.cpp'、行 1677。
(エラー発生元 : SV(データ ソース); エラー番号 : 18759)

急にこのようなエラーで悩まされた方はいませんか?

今のところの対応はSQL2000SP3からSQL2000SP4にパッチを当てましたが解決できず悩んでいます。


157 :NAME IS NULL:2006/05/02(火) 19:49:53 ID:???
>>155
だってベリファイできないじゃん



158 :NAME IS NULL:2006/05/02(火) 20:11:53 ID:???
SQL Server 2000で

select
伝票番号かも,
max(履歴番号っぽい)
from
伝票履歴みたいな
where
たぶん伝票タイプ = 'なんか'
group by
伝票番号かも

っていうのを速くしたいんですが
インデックス付きビューでカウントみたいな
激しく速くなるのってないですか

ちなみに(伝票番号かも,履歴番号っぽい)が主キーです


159 :NAME IS NULL:2006/05/02(火) 20:24:26 ID:???
日本語でOK

160 :NAME IS NULL:2006/05/02(火) 23:00:45 ID:???
>>158
履歴レコードに履歴以上の意味がないのなら、アクティブの伝票テーブルと履歴用テーブルを別にする。

次善の策としては最新のレコードは常に履歴番号0番にするなど固定の数字を使う。
この場合は伝票番号+履歴番号は代理キーとして、他に単一の主キーを設定するとよい。

161 :NAME IS NULL:2006/05/03(水) 00:27:54 ID:???
>>159
>>158に関しては日本語だからよく分からんという噂

162 :NAME IS NULL:2006/05/03(水) 01:01:08 ID:???
>>160
レスありがとうございます

やっぱりテーブルそのものか履歴番号の定義を変えるかしないと
速くするのは無理なようですね


163 :NAME IS NULL:2006/05/03(水) 11:17:26 ID:29YU5gFp
MS-Server2005の同時接続数って規定だといくつですか?

164 :NAME IS NULL:2006/05/03(水) 12:48:38 ID:???
>>163
サーバー構成オプションのuser connectionsなら自動の 0 が規定。
マニュアルで設定する場合はshow advanced options を 1 にする必要有。

165 :NAME IS NULL:2006/05/03(水) 15:32:24 ID:yjXLVpwU
SQL Server Expressでの質問です

新しいデータベースと新しいログイン(SQLサーバ認証)を作成し、
データベースの所有者をそのログインに設定しました

その後、マネージメントスタジオエクスプレスで新しいユーザーからログインしようとすると
「ユーザーXXXはログインできませんでした。このユーザーはSQLServerの信頼関係接続と関連づけられていません」
というエラーになり、ログインできません

新しく作ったユーザーでログインするためには他に何をしたらいいでしょう

166 :NAME IS NULL:2006/05/04(木) 09:05:48 ID:???
>>165
SQLServer認証自体は使えるようにしてあるの?
普通にインストールするとwindows認証しか使えないようになっていたような。

167 :NAME IS NULL:2006/05/05(金) 17:19:51 ID:n2S4jS03
SQLServer2000 Enterprise Edition についての質問です。

4GBメモリを搭載したWindows2003Server Enterprise Edition のサーバ2台で
SQLServerのMSCSを構築しようと思います。

SQLServe2000は4GBを超えるメモリを使用するにはAWEの設定が必要らしい
のですが、4GBメモリの場合は特に設定は必要ないのでしょうか?


メモリの動的割り当ての場合、最大何GBのメモリを使用するのでしょうか?
OSでも使用すると思うので3GBぐらいでしょうか?




168 :NAME IS NULL:2006/05/06(土) 07:35:16 ID:???
>>167
通常は2GBまで、これ以下なら自動設定で可。
OSを /3G で起動していて、max server memoryを3Gに設定すれば3Gまで使える。
残り1GBをAWEで使うかどうかは少し迷うところで、
OSやMSCSや他のサービスに1Gくらい予約しておいたほうがいいかもしれん。
ぎりぎりまでDBにメモリを食わせたいならパフォーマンスモニタ眺めて
3Gから4Gの間にmax server momoryの数値を設定すべし。

169 :NAME IS NULL:2006/05/06(土) 20:31:36 ID:GLw+f90y
>>168
レスありがとうございます。
1GBはOS等で残しておこうと思うのですが、
OSを/3Gで起動するとはどうやるのでしょうか?
知識不足ですいません・・・。


170 :名無し:2006/05/06(土) 20:50:53 ID:1zBphQHp
2ch言ってるけどあんな下等生物の溜まり場にいって全てPCのことしった気になってんじゃねーよ
あんな奴らのipの抜きかたなんてたかが知れてるっツーの
って書き込んできたやつがいるんだけどマジでこいつのIP抜いてやりたいから教えていただきたい、IP抜き法を


171 :NAME IS NULL:2006/05/07(日) 00:06:18 ID:???
そいつのPCでDOS窓立ち上げてipconfig

172 :NAME IS NULL:2006/05/07(日) 01:19:55 ID:???
>>169
http://support.microsoft.com/kb/833721/ja

173 :NAME IS NULL:2006/05/08(月) 14:18:58 ID:???
みんなWebでの帳票印字は何のツールつかってる?

SQL2005のReportingServiceしらべてみたけど、まぁ、そこそこいい感じ。
ただ区分が数字で入ってて、それを区分名に置換するのにiifを入れ子にしなきゃいけなかったり、
特殊な集計行をフッタに作ろうとすると、たくさんのDataSetを用意して、たくさんクエリを実行しなきゃ
いけなかったりで、なんか面倒な感じがするね。

あと、それぞれクエリの異なるデータセットを一括して表示して、印刷したい場合にはどうすりゃいいんだろう。
自前でADOで接続し、簡単にDataSetを帳票(のオブジェクト)に渡して表示させる方法があればいいんだけど。


174 :NAME IS NULL:2006/05/08(月) 19:16:57 ID:???
すいません。
既出かもしれませんが、よろしくお願いします。
今、WindowsMobile5.0のSQLServer 2005に
OLEDBでSQL Serverにアクセスするプログラムを
作っているのですが、OLEDBを理解するために、いいテキストがありましたら教えてください。
アマゾンで検索してみましたが、様々あって、どれがよいかわかりません。
よろしくお願いします。

175 :NAME IS NULL:2006/05/08(月) 22:13:57 ID:???
MSDN Library。マジおすすめ

176 :NAME IS NULL:2006/05/09(火) 10:02:21 ID:???
>>175
ありがとうございます。

MSDN Japan Home > MSDN Library Japan > ODBC プログラマのための OLE DB
あたりが参考になりそうですね。

これから読んでみます。



177 :NAME IS NULL:2006/05/09(火) 17:36:29 ID:Iu/7xhJ7
SQLsv2000の動作確認用に
WinXPpro上でスタンドアロンで動かしたいんですが
できますか?


178 :NAME IS NULL:2006/05/09(火) 18:23:43 ID:???
できる。つーかしてる。

179 :NAME IS NULL:2006/05/09(火) 18:57:59 ID:Iu/7xhJ7
>>178
トン

、、、なんですが
色々と調べてみたらスタンダードエディション(すみません!最初にバージョン書き忘れてました)だと入らないっぽいです、、、

検証したいDBのデータ容量が50Gを越えているので
評価版及び開発デベロッパでも無理そうです。

180 :NAME IS NULL:2006/05/09(火) 20:27:12 ID:???
>>179
>評価版及び開発デベロッパでも無理そうです。
50GBならいけるんじゃねーの。

181 :NAME IS NULL:2006/05/09(火) 22:04:04 ID:???
ちょっとTransact-SQLというか、クエリの書き方について質問。

ストアド内で、引数によりwhereの条件を変えようとしています。
@varが空文字か、または
@varが空文字以外でなおかつTABLE1.col1=@varが成り立つ列がTABLE1に存在する場合に
where条件が成り立つようにしたいので
(要点だけなので意味不明になってますが気にしないで下さい)

where @var = '' or (@var <> '' and exists (select * from TABLE1 where col1=@var)

と書いてとりあえずは正しい結果は出ますが、
TABLE1が大きなテーブルになると、@var='' だとしても結果が出るのに
時間がかかるようになってしまいます。

@var='' の場合はexistsを評価する必要が無いわけですが
そういうのをうまくやる方法はないでしょうか?

どなたか知恵をお貸し下さい。

182 :NAME IS NULL:2006/05/09(火) 22:06:07 ID:???
MSDE2000はmdfファイルの上限が2Gだね

183 :NAME IS NULL:2006/05/09(火) 23:05:26 ID:???
>181
ストアドだろ?なんでWHERE句にこだわるの?

IF ISNULL(@var, '')=''
BEGIN

END
ELSE
BEGIN

END

じゃダメなのか?

184 :NAME IS NULL:2006/05/10(水) 08:09:49 ID:???
>>181
col1にインデックスをつける


185 :NAME IS NULL:2006/05/10(水) 08:21:37 ID:???
ねぼけてたスマソ

少なくともsql server 2000、たぶんsql server 7以降では
特に何もしなくても@var=''ならTABLE1は読みにいかないはず

実行プランを確認してみそ

そそ、スピードは変わらないけど
@var = '' or exists (select * from TABLE1 where col1=@var)
でいいんじゃないかと


186 :NAME IS NULL:2006/05/10(水) 17:48:14 ID:4jWaeqOQ
175ですが、もっとよさそうなのを見つけました。
Win32およびCOM開発 > データアクセスおよびストレージ > Microsoft Data Access Components(MDAC) 
> SDKドキュメント >OLE DBの


Microsoft OLE DB 2.0
プログラマーズリファレンス & データアクセス SDK

です。

これから読んでみます。

187 :134:2006/05/10(水) 19:50:12 ID:uk6bc3km
                           __|
     ヽ ̄ ̄ ̄ ̄~゙゙'''‐、 |ヽ、        \.     十匸   メ
   |~7 ヽ、       ヽ!.  i、 .i、    i'⌒/    ノ|`ロjヌ
  .ト┴'─‐-ゝ           i l i    l.<          ̄
  ヽ                 レ' }    i >       ─|─
   `‐、_           ,...   ノ   ./      ,ノ\_    ド
  [ 二ニ=,>  ,.イ  ,i   (   ヽイフ .∠._
    -=ニ.._,.∠/ .∠|  A /ヽ.  \     i  ̄ 7   ヽ 、l/
  \ ,-、∠!ヽ// ,, |/,. -=、ヘ、.   ヽ    i  /    冫 月
  ヽ ゞi ! i゙!(`ba ‐''´ 6f9j,! レヽ    `‐、-=!.  ̄`7        ロ
  Y r´ |‐-‐}  ̄ー   ̄ ̄  _.ノ_\    ヽ..ノ   〈 ヽ ;‐十`
 ‐     ノ ヽヽ!   ! ̄ ヽ   /厂  { iヽ、      / 冫灰乂,
 ヽ、__.ノ、.__.ヽ、ヽ.__.ノ //     ヽ、._!     <
         ゙`ト.`‐、..イ_/     | | ヽ     \  ロ 口    l
             |.!  ヽY      | |ゝ ヽ      >   儿
           |.! ヾヽ] [ 〃/   | | \i    /
              !.! ゝ(◎)彡    | |   }    \   ‐┴‐
           ヾ=、、 ||   、.._ //i_-=ソ      >  _乂._    ア
                L!| !!、`''‐-  | | !.ノ    /
            /ヽ` !‐- 、...__!_!.ン      \  |! |! |! |!
           /l  //  //  _,!‐´        > ・ ・ ・ ・
           ,.{ ヽ.//  // ,.‐      ,.. -─ ''7



188 :181:2006/05/10(水) 19:54:17 ID:???
>>183
いや、実は例のような分岐が一度に5つあるので…
IFで分けようとしたらすごい量になってしまうのです

というか、自分も最初は安直にストアドたくさん作ってしまおうと思ったのですが
諸事情(具体的に言えばアホ上司の方針)によりストアドが増やせないという制限もあって…。

>>185
うーん、そのくらいはやってくれると思っていたのですが…
existsの部分を削るとすぐ結果が返ってくるのでやっぱり評価されているのかなと。
実行プランでも結構パーセンテージとってました。
ストアドが作られた時にいまいちな感じに最適化されちゃうのかなあ。

>>@var = '' or exists (select * from TABLE1 where col1=@var)
はこの場合はそうですね。
以前逆のようなシチュエーションがあって、その時は
この例でいうところのcol1=''の列があって不具合起こしてしまったので
神経質になっていました。

189 :NAME IS NULL:2006/05/11(木) 20:53:35 ID:???
>188

SELECT *
FROM TABLE
WHERE @var=''
UNION
SELECT *
FROM TABLE AS T
WHERE EXISTS
 (SELECT * FROM TABLE1 AS T1 WHERE T.COL1=T1.COL1 AND @var>'')

ってな感じでUNIONで分けてったら、実行プランはどんな感じになる?
EXISTSんとこの相関サブクエリは想像なんだけど、実際はこんな感じになるんだよねぇ?

190 :>>181:2006/05/11(木) 21:41:37 ID:???
>>189
UNIONか…実は結果のカラムも50以上あってしんどいんですが(^^;
明日試してみますね。

191 :NAME IS NULL:2006/05/12(金) 00:11:12 ID:???
Windows2000が入っているサーバーでSQLServer2000(SP3)を使用した
プログラムを以前作成したのですが、今回そのプログラムを改造するに
当たりサーバーのOSをWindows2003に変更することになりました。
OSが2003に変わってもSQLServer2000は特に問題無く動作しますか?
(勿論どんな処理をやってるかによって変わってくるというのは分かって
いるのですが・・)

192 :191:2006/05/12(金) 00:14:57 ID:???
>>Windows2000が入っているサーバーでSQLServer2000(SP3)を使用した
>>プログラム
Windows2000の入っているサーバーで動作する、SQLServer2000(SP3)を
データベースとして使用する販売管理のプログラム、です。
言葉がおかしかったので訂正です。

193 :NAME IS NULL:2006/05/12(金) 03:59:49 ID:???
>>191
Windows2003でSQL Server2000はサポート対象で問題無く動作する。
その販売管理システムがWindows2003で動くかは知らん。

194 :NAME IS NULL:2006/05/12(金) 07:37:19 ID:???
>191
分散使ってたのでセキュリティ設定を外した。

Windows Server 2003 でネットワーク DTC アクセスを有効にする方法
http://support.microsoft.com/default.aspx?scid=kb;ja;817064

リンク サーバーに対して分散トランザクションを実行するとエラー 7391 が表示される
http://support.microsoft.com/default.aspx?scid=kb;ja;329332

195 :191:2006/05/12(金) 07:56:43 ID:???
>>193
>>194
早速の回答、ありがとうございました。

196 :NAME IS NULL:2006/05/12(金) 14:40:35 ID:???
SQLServer2000(SP4)で、ジョブから空のテキストファイルを
作成したいのですが、どのようにしたらできるのでしょうか?
ActiveXスクリプトでファイルをOPENしてすぐにCLOSEすれば
いいらしいのですがよく理解できませんでした。

197 :196:2006/05/12(金) 15:04:47 ID:???
自己解決しました。
CreateTextFileオブジェクトでできました。
前に試したときは無理だったと思うのですが何か勘違いをしていたようです。
申し訳ありませんでした。

198 :NAME IS NULL:2006/05/13(土) 15:25:37 ID:???
Scripting.FileSystemObjectをcreateobjectして
textfileをつくればいいんじゃない


199 :NAME IS NULL:2006/05/14(日) 11:13:37 ID:???
テーブルをCreateして初期レコードをInsertするスクリプトを
osqlで実行すると、マシンによって実行速度にものすごい
差が出ることがありませんか?

スペックは同等のマシンなのに、かたや数分で終わるスクリプトが
かたや1時間くらいかかったりして、タスクマネージャーで見ると
遅い方ではCPU使用率が数パーセントしかありません。

こんな現象に悩まされている方、解決策をご存知の方はいらっしゃいますか?

200 :初心者:2006/05/14(日) 11:48:37 ID:rD/PlXLV
Microsoft SQL Server は既に動いており、3年間で60万件の数値データ
があります。これをWEBサーバーから検索してどこからでも閲覧できる
ようにしたいのです。

アクセスは少し組んだことがあるんですが、なんせ新しいアプリケーション
がたくさんであるようで合理的で安定的に使える近道はありませんか?


201 :NAME IS NULL:2006/05/14(日) 11:59:11 ID:???
>200
本屋に行って入門書を5〜10冊買ってくれば?
近道が欲しければ、外注に出せば?

202 :NAME IS NULL:2006/05/14(日) 11:59:36 ID:???
は?

203 :初心者:2006/05/14(日) 12:05:27 ID:rD/PlXLV
そんな冷たい・・
どの言語にしたらいいかくらい教えてください。そこからは自分で調べます
から。IIS+Perl とかアパッチ+Perlとかのようにお願いできま
せんか?

204 :NAME IS NULL:2006/05/14(日) 12:12:41 ID:???
>>203
つ ttp://www.amazon.co.jp/exec/obidos/ASIN/4798108677/249-4978238-1605929


205 :NAME IS NULL:2006/05/14(日) 12:18:46 ID:???
すみません、SQLサーバ初心者です。
情報系のシステムを構築していて、
そのDBを訳があって、オラクル9から、
SQLサーバに移項することになりました。

トランザクションデータは基幹系から大きめに
取得して、Merge文で情報系と同期を取る形に
していたのですが、SQLサーバにはMerge文が
無いとのことで、どうしていいか思案しております。

SQLサーバ使いの皆さんは、このような場合、
どういう処理を用いるのでしょうか?


206 :初心者:2006/05/14(日) 12:21:05 ID:rD/PlXLV
>>204
ASP.NETですか。勉強します。ありがとうございました。

207 :NAME IS NULL:2006/05/14(日) 12:22:30 ID:???
>>203
何でも好きなのにすれば?

208 :NAME IS NULL:2006/05/14(日) 12:25:07 ID:???
ちなみに前設計はこのようなものでした。

1.基幹系からデータをCSVで取得
2.SQLローダで情報系の一時的なテーブルに取り込み
3.そのテーブルから、情報系の正規のテーブルにMerge

これらのステップ自体、根本的なところから、見直した方が
いいですかね?

209 :NAME IS NULL:2006/05/14(日) 17:42:02 ID:???
>>205
set transaction isolation level serializable
begin transaction
update table1 set col1 = @2, col2 = @3 ... where key1 = @1
if @@rowcount = 0 then
       insert into table1 (key1, col1, col2 ...) values (@1, @2, @3 ...)
commit transcation

更新して結果ゼロ件なら挿入。
普通のバッチ処理ならserializableにする必要はないが
update と insert のわずかな間が気になるなら付けとくとよい。

210 :NAME IS NULL:2006/05/14(日) 18:45:40 ID:???
>>209
>if @@rowcount = 0 then
ちょっと修正 then いらないな
if @@rowcount = 0
begin
       insert into table1 (key1, col1, col2 ...) values (@1, @2, @3 ...) 
end

211 :NAME IS NULL:2006/05/14(日) 19:48:36 ID:???
どなたか>>199な方はいらっしゃいませんか?

212 :NAME IS NULL:2006/05/14(日) 19:54:58 ID:???
>>199
全く同じ手順を二つのマシンでやって違いが出るの?

片方ではmdfファイルの自動拡張とかが発生してたりしない?
HDDがフラグりまくってるところでmdfファイルの拡張が発生したりすると
結構ひどい事になるよ

213 :NAME IS NULL:2006/05/14(日) 19:58:31 ID:???
>>212
データベース作成時はサイズを指定していないので、自動拡張になっていると
思います。ということは、あらかじめサイズを決めれば改善される可能性は
ありってことですね。試してみます。

214 :205:2006/05/15(月) 00:54:41 ID:/F0thW1i
>>209
アップデートの戻り値を判定するんですね。
ありがとうございました。

後はパフォーマンスの問題ですね。
なんとかがんばってみます。

215 :NAME IS NULL:2006/05/15(月) 13:50:19 ID:E401pgx5
SQLServer2005 のフルテキストインデックス機能について質問です。

CONTAINS句による検索時に、この機能は単語単位でしか使用することが出来ないのでしょうか?

何を言いたいのかと言うと、下記の文字列の中から"京"や"戸川"で検索しようとすると抽出してくれないのです。
-------------------
東京都江戸川区松島
-------------------

"東京"や"江戸川"といった単語単位なら抽出してくれるのですが・・・
色々と調べて検索文字列の後に"*"をつけると、単語単位の前方一致検索はしてくれるまでは解りました。
前方一致だけでなく後方一致もさせるようにすることは可能でしょうか?

最終的には、"京"や"区松"といった検索文字列でも抽出できるようにしたいのです。
宜しくお願いします。


216 :NAME IS NULL:2006/05/15(月) 15:01:50 ID:???
>>215
全文検索エンジンというのはそういうもの。
条件に完全に会うものをリストしたいならLIKE句を使うべきだろう。
LIKEで中間一致の場合はパフォーマンスが激しく悪いことを覚悟するべし。

217 :215:2006/05/15(月) 17:02:38 ID:???
そうですか・・・・orz

オラクル9.2 であれば大丈夫だったので、後発のSQLServer2005 も対応してると楽観視してたのですが。
SQLServerだとトークン単位が粗いんですね。

それ以外だとLike中間一致を使わないといけないのか・・・
もっと調査してみます。。。

ありがとうございました。


218 :NAME IS NULL:2006/05/15(月) 17:03:19 ID:???
"*江戸川*"ってできなかったっけ?


219 :NAME IS NULL:2006/05/15(月) 17:04:10 ID:???
>>216
んなこたない。

220 :NAME IS NULL:2006/05/15(月) 18:50:21 ID:???
<prefix_term> 
指定のテキストで始まる単語または語句の照合を指定します。
プレフィックス語句を二重引用符 ("") で囲み、後ろの二重引用符の前にアスタリスク (*) を挿入すると、
アスタリスクの前に指定された文字列で始まるすべてのテキストが照合されます。
句は、CONTAINS (column, '"text*"') のように指定してください。
以上SQL2005 BOLより

確かに *指定は後ろだけみたいだね。

221 :NAME IS NULL:2006/05/15(月) 21:55:54 ID:???
>>219
どう、んなこたないの?

222 :215:2006/05/16(火) 14:21:31 ID:???
>>220
そうなんですよね・・・・


ちょっと考えたんだけど、苦肉の策としてこういうやり方はどうだろう・・・

1.対象となる文字列に1字づつ空白を入れて格納。

  例) "東□京□都□江□戸□川□区□松□島□"  ※□=空白

  これにより1字1単語とSQLServerに無理やり認識させる。

2.検索時に検索文字列を分解し、contains句で対象レコードを抽出
  
  例) "戸川区"で検索する場合  ⇒  contains("'戸' and '川' and '区'")

3.上記2.の抽出レコードから、さらにLike中間一致検索を行い対象レコードを抽出

  例) Like '%戸川区%'

4.完了!!


(´・ω・`) ぬるっぽい?


223 :NAME IS NULL:2006/05/16(火) 15:15:23 ID:???
よー考えるワ ^-^;

224 :215:2006/05/16(火) 20:34:13 ID:???
ちなみに、検索文字列が1文字だけだと、手順3は必要ありません。
恐らく like 中間一致検索を単体で実行するよりも早いんではないかと。
でも、こんな糞な方法なんて出来ればやりたくな〜い・・・・・orz
もっと良い方法ないかな〜

しかし・・・、フルテキストインデックスを構築すると復元手順が面倒臭くなるな・・・。
おまけに復元作業もコミット時点に戻す事が出来ないし。
あと、増分バックアップ機能が無いときたもんだ。
ロックエスカレーションもしやがるし。

値段が高いOracleと比べるのは酷な話だけど、SQLServer は (´・ω・`)ショボーン となるような中途半端な機能ばっかりだな・・・・。

愚痴になってスマン。
SQLServer愛好家の人がいたらスマン。

もっとSQLServer2005を調査します。
んで、解らんとこが出てきたら、また質問しに来ます!
ノシ


225 :NAME IS NULL:2006/05/17(水) 17:14:22 ID:apfAxcdl
Windows2000Server + SQLServer2000.STDで作業をしています。

データの入っているテーブルを
テーブル定義及びデータ込みで
別名で複製することはできますでしょうか?
(オリジナルはそのまま残します。ようするに完全コピー)

テーブル数が約50個あるので、
一括でできる方法があるとうれしいです。

例)
テーブルA→W_テーブルA(データもコピー)
テーブルB→W_テーブルB(データもコピー)



テーブルZ→W_テーブルZ(データもコピー)

以上。

226 :NAME IS NULL:2006/05/17(水) 17:20:50 ID:???
select into

227 :NAME IS NULL:2006/05/17(水) 17:49:17 ID:apfAxcdl
>>226
トン。
えーと、その方法だと同構成のテーブルを
あらかじめ用意する必要がありませんか?
(私の認識不足でしょうか)

テーブル作成も含めて一括作成できるとありがたいです。


228 :227:2006/05/17(水) 17:58:28 ID:apfAxcdl

>>226
すみません。
SELECT * INTO W_A FROM A;
でいきました。

お騒がせしました&ありがとうございました。

229 :NAME IS NULL:2006/05/17(水) 22:55:07 ID:???
しかしSELECT INTOだとインデックスは複製されないぞ!
単にデータ退避とかならいいとして、そうじゃなかったら要注意だぜ。

230 :NAME IS NULL:2006/05/20(土) 09:34:59 ID:Nz3hdX5y
SQLServer2005 って、Windows認証を無効にすることが出来ないですか?
SQLServer認証オンリーの運用だから、無効にしたいんだけど。
BUILTIN\Administratorsログインも無効にしようとしても無駄だったし・・・・・

どうしてOracleのようにWindows認証を無効にすることが出来ないんだよ・・・・
出来る限りセキュリティーホールを埋めたいのにさ。


231 :NAME IS NULL:2006/05/20(土) 17:42:48 ID:???
SQL Server認証は後方互換のために搭載されてる機能で将来廃止の方向だから
推奨の認証方式である統合認証を削る選択肢は用意されていないと思う。

232 :NAME IS NULL:2006/05/20(土) 21:25:45 ID:???
>>230
BUILTIN\AdministratorsとBUILTIN\Usersは
ログイン無効には出来なかったが、削除は出来た。なんでだろう。

233 :NAME IS NULL:2006/05/21(日) 10:53:18 ID:xV+s6Q50
リモート接続について質問です。(SQLServer2005)

既定のインスタンスへのリモート接続は可能ですが、名前付きのインスタンスへのリモート接続が出来なくて困ってます。

接続に使ったSQLCMDを以下に示します。 (両インスタンス共にリモート接続を許可)
@sqlcmd -S Server -U sa -P ****
Asqlcmd -S Server\Instance -U sa -P ****

リモート接続においては、@は接続可能でAは接続不可でした。
ローカル接続においては、@Aともに接続可能でした。

接続不可時のエラーメッセージは以下の通り
==================================================================================
HResult 0xFFFFFFFF、レベル 16、状態 1
SQL ネットワーク インターフェイス : 指定された Server/Instance の位置を特定して
いるときにエラーが発生しました [xFFFFFFFF].
Sqlcmd: エラー: Microsoft SQL Native Client: サーバーへの接続確立時にエラーが発
生しました。接続先が SQL Server 2005 である場合は、既定の設定では SQL Server が
リモート接続を許可していないことが原因である可能性があります。。
Sqlcmd: エラー: Microsoft SQL Native Client: ログイン タイムアウトが時間切れになりました。
==================================================================================


234 :NAME IS NULL:2006/05/21(日) 11:01:37 ID:???
>>233
SQL Server セキュリティ構成でローカル接続のみになってない?

235 :233:2006/05/21(日) 11:11:35 ID:xV+s6Q50
>>234
いや、両インスタンス共にリモート接続を許可にしてあります。


236 :NAME IS NULL:2006/05/21(日) 17:39:57 ID:???
>>233
名前つきインスタンスでポートを動的にしてない?
規定のポート(1433だったかな)以外でリモート接続するにはサーバ側で
SQLServer Browserが動いてないと繋がらないはず

237 :233:2006/05/21(日) 17:56:45 ID:xV+s6Q50
>>236
ありがとうございます!
無事に繋がりました!
感謝感謝!

しかし、SQL Browserが動いてないと駄目なのか・・・
そんなことBooks Onlineでは書いてなかった気がするがな・・・・
('A`)

ポートの動的(?)についても調べてみます。ありがと。
ノシ


238 :NAME IS NULL:2006/05/22(月) 11:11:25 ID:???
T-SQLに全角を半角にする関数は用意されていますでしょうか?
バージョンは2000です。

239 :NAME IS NULL:2006/05/23(火) 01:58:24 ID:???
Enterprise Managerを使うと、列と列の間に列を作ることが出来ますが、
これをALTER TABLE またはその他なんかのコマンドでやるにはどうしたら
いいですか?

240 :NAME IS NULL:2006/05/23(火) 09:01:09 ID:???
>239
プロファイラでログとってみたら?
たぶんなかったと思うが


241 :NAME IS NULL:2006/05/23(火) 11:31:36 ID:???
超ド級の初心者です、Accessは使ってました
SQL Server 2005 Express Editionをインストールしました
サービス(SQL Server(SQLEXPRESS))も開始されてます

・・・

.mdfをどうやったら新規作成できるんですか?
本気でわかりません、ネットでも検索しましたが
「Visual Studio 2005から・・」みたいな解説しか見つかりませんでした

242 :NAME IS NULL:2006/05/23(火) 11:43:27 ID:???
>>239
無い

EMの裏の処理では、DROPしてからCREATEしてる。


243 :241:2006/05/23(火) 11:47:23 ID:???
すいません、すげぇバカな質問ですね、スルーしてください
入門書買えっての・・>俺

244 :NAME IS NULL:2006/05/23(火) 11:52:00 ID:???
>>243
初心者ならば、以下のサイトで勉強することをお勧めする。
とても解り易く記述されてる。

http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/exercises.mspx


245 :NAME IS NULL:2006/05/23(火) 11:56:31 ID:???
>>241
SQLCMDから CREATE DATABASE userdb で作れる。
VS2005 Express Editionからはいろいろ制約が多くて常設のデータベースは作れない。

246 :241:2006/05/23(火) 11:59:09 ID:???
>>244-245
親切にありがとうございます、助かります

247 :NAME IS NULL:2006/05/23(火) 12:02:44 ID:???
いまはSQL Server Management Studio Expressを追加でダウンロードできるからこれ使えば簡単。

248 :NAME IS NULL:2006/05/23(火) 22:09:41 ID:???
>>242
厳密には
別名でcreate→insert→元テーブルdrop→新テーブルrename
どうでもいいけどねw

249 :NAME IS NULL:2006/05/24(水) 00:32:59 ID:???
>>242
うえぇ・・・

250 :242:2006/05/24(水) 02:32:24 ID:???
>>248
うん・・・・その通りっス (´・ω・`)


>>249
何だよ? (`・ω・´)


251 :NAME IS NULL:2006/05/24(水) 11:31:05 ID:XbSlj+YX
すみません。
SQLServer2000スタンダードのメモリ管理について教えてください。

環境は
CPU:Celelon2.4G
メモリ:512M
OS:Win2000サーバSP4
DB:SQLServer2000スタンダード
です。

初期起動時は300M〜ちょいくらいなのですが、
ちょっと動かしているとメモリが暴暴発して
700M〜1000Mくらいになってしまいます。
このメモリ使用量を適度なサイズに抑えることは
設定で可能なのでしょうか?


252 :NAME IS NULL:2006/05/24(水) 12:02:57 ID:???
>>251
max server memoryを調整。EMからも設定できる。
ただし2GB以下は自動調整が基本で、700M〜1000Mの数字が妥当な場合もある。
パフォーマンスモニタ等で前後を測定してどちらがパフォーマンスがいいかよく検討すること。

253 :NAME IS NULL:2006/05/24(水) 13:31:18 ID:XbSlj+YX
>>252
ありがとうございます。
参考にさせていただきます。

254 :NAME IS NULL:2006/05/25(木) 10:29:50 ID:mhvD28e7
SQLServer2005の参考書って極端に少ないよね・・・・

何でだろ?


255 :NAME IS NULL:2006/05/25(木) 14:57:59 ID:???

ほかの参考書を真似て書くことができないから

256 :NAME IS NULL:2006/05/25(木) 20:16:36 ID:???
MSDNが結構充実しているし、
TipsだったらMSMVPな人たちのBlogとかPASSJとか見れば事足りるから
別に参考書ってものも要らないなぁ。

257 :NAME IS NULL:2006/05/25(木) 21:48:43 ID:???
あるテーブルをロックしつづけているプロセスをぶち殺したいのですが
どのアホがロックしているのか知るにはどうすればよいのでしょうか
ちなみにエンタープライズマネージャーは
エラー1222:テーブルのロック要求がタイムアウトしました
とぬかしてロック情報が一切表示されませんでした


258 :257:2006/05/25(木) 21:50:45 ID:???
失礼
sql server 2000です

259 :NAME IS NULL:2006/05/25(木) 23:56:25 ID:???
>>257
sp_lock と sp_who でわかるけど、
EMのロック表示でエラーになるようならこちらもエラーになるかもしれない。

260 :257:2006/05/26(金) 01:38:59 ID:???
>259
ありがとうございます
やってみます



261 :NAME IS NULL:2006/05/26(金) 19:27:30 ID:gU6D8XHD
なんか、SQLServer Management Studio 不安定にならない?

よく固まるんだが・・・・・


262 :NAME IS NULL:2006/05/27(土) 11:02:29 ID:???
ちょっと重い事はあるけど固まって逝く事は無いけど。

むしろEnterprise Managerの方が突然死が多かった。
SQLServer2005beta入れた後はほとんど使い物にならなかったな>EM

263 :NAME IS NULL:2006/05/27(土) 12:45:18 ID:???
ManagementStudioもEMも落ちたことないな
クライアント側にもちゃんとSP当ててるか?

264 :NAME IS NULL:2006/05/27(土) 14:30:17 ID:cnUZHQ+0
同じワードで始まる名前のテーブルに一括してアクセス件を与えたいのですが、
なにかいい方法はありませんでしょうか。
GRANT SELECT ON table_* TO hoge
↑みたいなことがしたいのですが、アスタリスクは使えませんよねぇ。
EnterpriseManagerからユーザーまたはロールのプロパティーで
大量のチェックを付けるしかないんでしょうか?

265 :NAME IS NULL:2006/05/27(土) 22:26:39 ID:???
>>264
sysobjectsを使うのじゃ

266 :NAME IS NULL:2006/05/28(日) 01:38:35 ID:???
@自分の端末のmanagemment studioからファイル(エクセルとかCSV)をインポートするとき
エラーが出るんだけど、
リモートデスクトップでSQLサーバーが入っている端末にログイン
したmanagemment studioからインポートするとエラーが
出ないんだけど、そういう物なのですか?

いちいちインポートするためにリモートデスクトップでログイン
するのめんどくさいんですけど。

Aテーブルを作らずにCSVファイルをインポートすると
エラーが出ました。よくよく調べると50バイト以上のデータを
インポートすると出るようです。(これまた)そういう物なのでしょうか?

267 :NAME IS NULL:2006/05/28(日) 01:47:53 ID:3yfmUsmZ
↑Aですが、補足です。フィールドが50バイト以上です。

268 :ExcelVBA+MSDEの解説本:2006/05/28(日) 16:29:41 ID:YTgFIkiG
質問させて下さい

ExcelVBAでMSDEを操作してみたいのですが、この二つを連携させた解説本または、この二つの連携を学ぶことのできる解説本をご存知でしたら、教えてください
本屋で探しても
ExcelVBAとAccess
AccessからSQLServer
といった連携の題名の本しかないので、これらの本 では、ExcelVBAとMSDEの連携および操作を学ぶことができなさそうです。
データベースはXOOPS立ち上げのためにMySQLを使った事があるという程度の初級者です
御助言お願いします

269 :NAME IS NULL:2006/05/28(日) 16:35:34 ID:NsxyhI0v
朝、姉ちゃんが俺の部屋に起こしに来てたんだけど
俺は連日の2ch閲覧による夜更かしで眠すぎて起きれなかったんだ
全然起きる気の無い俺を見て、姉ちゃんが部屋に入ってきて、俺に馬乗りになる
鬱陶しいなーとか思ってると、姉ちゃんが寝てる俺の耳元で

「朝だぞおおおお早く起きなさああああい」

寝起きの悪い俺は姉ちゃんにムカついてガバっと起きた
「キャッ!!」
起きた瞬間俺の唇に何か柔らかい感触、びっくりして目を開けたら
俺が急に起きたせいでベッドの上に転んでる姉ちゃん
「え・・・と、今口に何か当たったんだけど・・・」
「ん・・・んー?wなぁに?w」

二人でちょっと無言になっちゃったけど気づくと姉ちゃんの手が俺の股間に乗ってるのがわかった
「ちょっと姉ちゃん、とりあえず降りて、ベッドから降りて!」
俺は焦って、慌てて姉ちゃんをどかそうとする。
「なによwせっかく起こしてあげたのにー・・・あ、そっかwコイツのせいかw」
俺の股間の硬さに気づかれた、俺は思わず逃げようとしたが寝起きで力が入らない。

「ちょっとおとなしくしててw」

そう言うと姉ちゃんが両手で俺の股間に手を置き、触りだした。
初めて他人に触られる俺の股間・・・みるみるうちに大きく膨れ上がるのが自分でわかった
「あ・・・wおっきくなってきた・・・もうwしょうがないなぁw」
そう言うと姉は俺のトランクスの中に手を入れてきて

長くなりそうなんで続きはこっちで↓
http://hobby7.2ch.net/test/read.cgi/point/1146442166/

270 :NAME IS NULL:2006/05/29(月) 18:14:57 ID:???
ワッフル、ワッフル

271 :NAME IS NULL:2006/05/29(月) 21:49:57 ID:???
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
でトランザクションかけてる1つのストアドプロシージャを
2つ同時に実行すると1つが
エラー1205 前略デッドロック以下略
でこけやがりました
SQL Server2000って先発のトランザクションが
コミットするかロールバックするまで後発が待機する
ようにするにはどうすればいいのでしょうか
データベースは1こです


272 :NAME IS NULL:2006/05/30(火) 00:03:17 ID:???
条件によってロックの順番がまちまちだったりしないだろうな

273 :271:2006/05/30(火) 00:09:16 ID:???
レスありがとうございます

ロックする順番はいつも同じです
途中で何らかのエラーになったら必ずロールバックして処理を終了し
スキップして次にいくことはないです


274 :NAME IS NULL:2006/05/30(火) 00:49:13 ID:???
sql server 2000 と 2005 は共存可能でしょうか?

というより sql server 2000 を 2005 にアップグレードした場合、
sql server 2000 と互換性をもったままデータベースを保持する事はできませんか?

客先の環境が sql server 2000 なんですが、2005 の環境を構築したいのですが、
2005 にあげると客先の 2000 のデータベースの保守ができなくなると困るな、と。

やはり別の環境を構築するしかないでしょうか?


275 :NAME IS NULL:2006/05/30(火) 08:13:38 ID:???
片方をVirtualPCにでも入れとくとか

276 :NAME IS NULL:2006/05/30(火) 08:45:50 ID:???
>>274
ヒント:互換性レベル


277 :NAME IS NULL:2006/05/30(火) 13:14:46 ID:???
>>274
Books Online
SQL Server の複数のバージョンの使用
http://msdn2.microsoft.com/ja-jp/library/ms143694(SQL.90).aspx

278 :NAME IS NULL:2006/05/30(火) 15:03:44 ID:???
SQL Server 2000と2005の環境があります。
VB.NETで作られたプログラムからのクエリですが、プロファイラで見てみると
2000 は exec sp_executesql N'省略....', @StartDate = '05 30 2006 12:00 AM' となっているのに対し
2005 では exec sp_executesql N'省略....', @StartDate=''2006-05-30 00:00:00:000'' のように

引用符 (') がなぜか2重についてしまい SQL がエラーをおこします。
同じプログラムから SQL Server 2000 と 2005 にアクセスした挙動が異なるので、
プログラム側の問題ではなくてSQL SERVER側の問題かと思っています。

上記が発生する原因と対処方法を御存知の方、アドバイス頂けると幸いです。


279 :NAME IS NULL:2006/05/30(火) 18:07:18 ID:???
>>278
「2000だと動くけど2005だと動かないプログラムの書き方をしている」
というプログラム側の問題かもしれないじゃん?
プログラムも晒したら?

280 :NAME IS NULL:2006/05/30(火) 21:04:20 ID:???
>>278
最低でもVB.NETのバージョン、ADO.NETかどうか(SQLClientかOleDBか)、
MDACなどドライバの種類とバージョンぐらい書いとくもんだ。
ここまで書いて思ったが、MDACが古いとかじゃないの?

281 :NAME IS NULL:2006/05/31(水) 11:42:39 ID:???
MDAC は Native Client に変更になったから注意

282 :NAME IS NULL:2006/06/01(木) 14:52:26 ID:???
ストアドプロシジャか何かで、SQL Serverが稼働しているPCから見えるネットワークドライブなどを
取得する方法はないでしょうか?

283 :NAME IS NULL:2006/06/01(木) 17:07:14 ID:jbHKZ6Mc
ODBCでSQLに接続する際の「システムDSNの設定」で
「接続するSQL Server名」でドロップダウンボックスに表示される
過去の履歴を消去する方法をご存知の方がおられましたら教えてください。

よろしくお願いいたします。

284 :NAME IS NULL:2006/06/01(木) 17:31:32 ID:???
あれは履歴じゃなくて、近所にいるサーバを列挙してるんだと思うが。

285 :NAME IS NULL:2006/06/01(木) 17:40:52 ID:jbHKZ6Mc
同じサーバ名の重複や、間違えて入力したもの等がいつまでも残ってるんですが・・・
ちなみにIP指定したサーバとPC名で入力したサーバも重複表示されてます。
サーバがおかしいだけ・・・でしょうか?

286 :NAME IS NULL:2006/06/01(木) 17:49:55 ID:???
それは知らない。
そういうのはどーせレジストリに入ってるんだろうから、「間違えて入力したもの」
をレジストリから全検索すれば。

287 :NAME IS NULL:2006/06/01(木) 18:07:45 ID:???
>>282
xp_cmdshellでがんがる

288 :NAME IS NULL:2006/06/01(木) 18:09:12 ID:???
>>282
あとSQLCLRでも出来ると思う。

289 :NAME IS NULL:2006/06/01(木) 21:37:21 ID:???
だがネットワークドライブはログインユーザが繋いでいるものなので
別ユーザからはどうやっても見れないような気もする

290 :ExcelVBA+MSDEの解説本:2006/06/01(木) 22:37:58 ID:nF0ivfEo
別の場所に質問します。
こちらでは,場所違いだったようです。
失礼致しました。

291 :287:2006/06/02(金) 08:11:43 ID:???
>>289
そりゃそうだ

292 :NAME IS NULL:2006/06/02(金) 09:46:44 ID:3J9HmheU
SQLServer2005には、Oracleで言うところのバインド変数という機能はありますか?

つまり・・・、下記のSQL文の違いはwhere句の値部分だけですよね。

 @ SELECT * FROM hoge WHERE name = 'Nancy'
 @ SELECT * FROM hoge WHERE name = 'Mike'

そういう場合は、@でコンパイルや実行計画作成などの処理がされたら、
Aではその処理をスキップする機能があるのか聞きたいのです。

ストアドプロシージャでは備わっている事は解ったのですが、
VBなどのクライアントから発行されるSQL文にも対応可能かどうか。



293 :NAME IS NULL:2006/06/02(金) 17:21:20 ID:???
>>292
平文のSQLしか受け付けないDBMSのほうが珍しいと思うが、
聞きたいのはミドルウェアでどうするかという話だろう?
ADO.NETなら次を参照。
http://msdn2.microsoft.com/ja-JP/library/system.data.sqlclient.sqlcommand.prepare.aspx

294 :NAME IS NULL:2006/06/06(火) 22:25:57 ID:???
はじめまして よろしくご教授お願いいたします。

概要:SQL-serverのデータベースに300,000件(30万件)のデータを
   BCPコマンドを使用してアップロードした時に、インポートは
   うまく行きません。

事象:エラーの内容は、1件目から、日付項目にエラーと出るのですが、
   実際はデータ的に問題ありません。
(※@ 既にそのデータは、ローカル間の環境での試験には成功しています。)
(※A 200,000件(20万件)のデータでのサーバー間での環境では成功しました。)

懸念:今回、失敗したのは、@のサーバから、BCPコマンドをたたいて、
   AのサーバのDBにデータをインポートします。
   ローカルのPCでの作業ではうまく行ったで、サーバー間の環境では
   うまく行かないため、何かしら制限があるのかと思いました。

やはり、サーバー間同士だと、なにかしら、数の制限があるのでしょうか?
SQL-serverのデータの許容範囲の設定のところは十分クリアできるデータサイズです。
いろいろ、試行錯誤したんですが、わかりません。
どなたか、知識ある方は教えていただけると、助かります。
すみません。m(_ _)m


295 :NAME IS NULL:2006/06/06(火) 22:45:45 ID:???
サーバーとクライアントで言語設定、日付の設定が違うとか・・・

296 :NAME IS NULL:2006/06/06(火) 22:49:45 ID:???
bcpで使ってるオプションは -n ? -c ? -f ?

297 :NAME IS NULL:2006/06/06(火) 23:10:39 ID:???
>>295 参考にして、明日 チェックしてみます m(_ _)m
>>296 送り込むサーバには -S オプションを指定しています。

298 :NAME IS NULL:2006/06/06(火) 23:25:28 ID:???
>>297
-n -c -w -N -f のどれも指定しない場合は毎回フィールドのストレージ型とかプレフィックス長をきいてくるけど
毎回答えてるの?

299 :NAME IS NULL:2006/06/06(火) 23:36:26 ID:???
>>298 いえ 必要な物は全て 定義しています。
-U (USER名)
-P (PASS)
-f (フォーマット定義)
-S (送り先サーバー名)
-e (エラーファイル出力) + result
このオプションでローカル環境でもサーバー間環境でも200,000(20万件)
は成功しました。
でも 300,000(30万件)まで、データ数を増やすと、エラーになってしまいます。
エラーじたいは、日付エラーで一行目からインポートできません。

そのエラーデータでも、200,000(20万件)に削減すれば、正常終了して
インポートされるので…

どうしていいやら、こまりました

300 :NAME IS NULL:2006/06/06(火) 23:38:04 ID:???
ローカル環境なら、1000,000(一千万)データでもインポートは正常にできます。
データの作成もツールで作成していますので、データの不具合ではない事くらいしか
判別できません。


301 :NAME IS NULL:2006/06/07(水) 16:03:51 ID:???
 SQL Server 2000 の UNIQUE INDEX って、JET と違って 2行以上に NULL が
含まれると制約に違反しているとか言ってくるけど、
「NULL は許可して、NULL 以外の行に重複が出ないようにする」
という要求を満たすことをみんなどうやって実現しているのカナ?カナ?

302 :NAME IS NULL:2006/06/07(水) 17:28:56 ID:???
>>301
SQLServerはNULLも含めて索引を作ってしまうからね。
A1 主キー
A2 その他データ
A99 UNIQUE INDEX NULL許可
の場合の対応はこんな感じで別テーブルに切り出す。NULLの場合はこのテーブルにレコードが存在しない。
A1 主キー
A99 UNIQUE INDEX NOT NULL

303 :NAME IS NULL:2006/06/08(木) 17:15:57 ID:???
初心者くさい質問で申し訳ないのですが
SQL Server 2005 にて

CREATE TABLE TEST_A(
A_ID int IDENTITY(1,1) NOT NULL,
A_NAME varchar(255)
)

というテーブルにINSERTをしたときに採番されるA_IDを取得したいのですが、
INSERT後にSELECT MAX(A_ID) FROM TEST_A としても他ユーザがINSERTしていた
場合に数値がずれてしまいます。
上手く取得する方法はないでしょうか?

オラクルだとシーケンスは別定義なので問題ないのですが。


304 :NAME IS NULL:2006/06/08(木) 17:31:01 ID:???
SCOPE_IDENTITY()

305 :303:2006/06/08(木) 17:43:01 ID:???
>304
ありがとうございます。
助かりました。

306 :NAME IS NULL:2006/06/09(金) 11:53:50 ID:???
データベース保守計画で作成したジョブをコピーしたいのですが
いい方法はありますか?
同じ内容でデータベースが違うジョブをプログラム上でコピーして
作成するのが目的です。

307 :NAME IS NULL:2006/06/16(金) 23:32:27 ID:???
MSDEのSP3aをSP4にしたいのですが、マイクロソフトからダウンロード
してきたSP4を次のような記述のバッチで実行しても上手くいきません。

setup /upgradesp sqlrun BLANKSAPWD=1SECURITYMODE=SQL UPGRADEUSER=sa
UPGRADEPWD= /L*v C:\MSDELog.log

一応アップグレードが始まったような感じでバー(グラフみたいな奴)が
伸びて行って何も言わずに終了するのですが、バージョンを確認しても
SP3aのままです。
ログを見てみたのですが一番最後が「構成は正しく更新されました」と
いうようなメッセージが出力されています。


どうやれば上手くいくかご存知の方、宜しくお願いします。


308 :307:2006/06/16(金) 23:33:06 ID:???
MSDE2000でOSはXpのSP3です。

309 :NAME IS NULL:2006/06/17(土) 00:53:20 ID:???
>>308
XPのSP3っていつ出たの?


310 :307:2006/06/17(土) 01:36:35 ID:???
>>309
失礼、SP2です

311 :NAME IS NULL:2006/06/17(土) 07:12:08 ID:???
対話型でセットアップしたらうまくいく?
あとはSP4からsa のパスワード無しは許可しなくなったからその辺の影響とか。

312 :307:2006/06/17(土) 08:38:51 ID:???
>>311
対話型は試してないのです。
お客さんがバッチ実行するだけでインストールできるように
しとかないといけないので・・。
よく分かってないのですが、sp3の状態でsaにパスワードを
つけて(どうやって?)
UPGRADEUSER=sa
UPGRADEPWD=saのパスワード /L*v C:\MSDELog.log
として実行すればOKということでしょうか?



313 :307:2006/06/17(土) 08:41:39 ID:???
これで設定ということですね?

osql -U sa
sp_password @old = null, @new = 'complexpwd', @loginame ='sa'


314 :NAME IS NULL:2006/06/17(土) 12:13:03 ID:???
かなり前にSP4あてたので記憶が曖昧だが…
マイクロソフトからダウンロードしたファイルはアーカイブファイルなので
Cドライブの直下に解凍されたフォルダがある。解凍後のフォルダにあるsetupを実行してみたら?
まと外れだったらスマン。

315 :307:2006/06/20(火) 00:08:27 ID:???
>>311
>>314
どうもありがとうございました。
saパスワードを付与してから実行したところ、ちゃんとSP4に
アップグレードされました。


BLANKSAPWDのオプションが効かないのなら、そういう
メッセージを出してくれればいいのに・・。

316 :NAME IS NULL:2006/06/20(火) 21:09:51 ID:UnuZbu+v
SQL分を教えて下さい。
キー1 キー2 項目A 項目B キー3
A B 100 200 20060621
A B 100 300 20060620

というようなデータがあったとき
キー1 キー2 項目A 項目B
A B 200 200

というように項目Aは同一キーでSUM,項目Bはキー3で新しい日付の
データを活かすようなSELECTってどうすればできますか?

317 :NAME IS NULL:2006/06/20(火) 21:25:47 ID:et/C7JSy
>>316

SELECT キー1,キー2,MAX(キー3),SUM(項目A) FROM TABLE GROUP BY キー1,キー2

こういうサブクエリ作ってさらに結合するしかないかな

318 :NAME IS NULL:2006/06/20(火) 21:32:46 ID:et/C7JSy
ん?違うかな?「同一キーでSUM」の「同一キー」はどこまでだ?

319 :NAME IS NULL:2006/06/20(火) 21:34:38 ID:UnuZbu+v
>>317
教えていただき、ありがとうございます。
このテーブルは1千万件データが入っているのですが
結構時間がかかりますよね。
本当の処理ではこのSELECTで抽出されて結果と約1億件データが
入っているテーブルとを比較して同一キーがあればSELECTした項目A
を加算、項目BをUPDATEしなければなりません。
ここまでの処理を1時間で終わらせる事ができるか心配です。

320 :NAME IS NULL:2006/06/20(火) 21:36:00 ID:UnuZbu+v
>>318
ここでの同一キーはキー1,キー2です。
紛らわして申し訳ありません。

321 :317,318:2006/06/20(火) 22:10:10 ID:et/C7JSy
うーん。なるほど。普段小さいシステムばっかりだから、1千万件ものデータを
扱ったことはないなあ。

322 :NAME IS NULL:2006/06/21(水) 15:35:59 ID:WnpBQn4q
今、自分がいる環境では何という種類のSQL Server
が動いているのかをチェックする方法ってありませんか?

323 :NAME IS NULL:2006/06/21(水) 15:57:39 ID:???
>>322
SELECT @@VERSION

324 :NAME IS NULL:2006/06/21(水) 17:59:42 ID:???
SQL Server2005 Expressはデータベースの
容量が4GBに制限されているようですが、
現在データベースが何B使っているかを
調べるにはどうすればよいでしょうか?

325 :NAME IS NULL:2006/06/21(水) 18:24:10 ID:???
>>324
FILE_NAME 関数と FILEPROPERTY 関数

326 :NAME IS NULL:2006/06/21(水) 21:27:25 ID:???
sysdatabaseって手もあるでよ

327 :NAME IS NULL:2006/06/25(日) 23:54:41 ID:UBvWo12k
現在大規模なデータを取り扱う開発をしています。
9000万件のデータと500万件のデータをJOINし、空っぽのテーブルに
INSERTしています。
INSERT処理自体は30分以内でCOMMITまで実行Sれているようなのですが、
この処理を行うとEnterprise Manageやクエリアナライザなども固まってしまい
困っています。サーバはかなり良いスペック(CPU、ディスクなど)で問題ないかと
思うのですがSQLServerがこの処理についてこれないのでしょうか?


328 :NAME IS NULL:2006/06/26(月) 09:25:26 ID:???
>>327
重そうな処理ではあるが完全に固まるようならDISKの構成が悪いとかないかな。
たとえばグループも分けずにRAID5の巨大な仮想ディスクを1つを作って、
そこにOSやらスワップやらDBファイル、ログファイルを全部ぶち込んだらIOネックで動かなくなる。

329 :NAME IS NULL:2006/06/26(月) 20:28:44 ID:???
しかし、SQL Serverってクソだよな。
offset つかえねーし。topでなんとかやろうにもかなり苦労する。
保守性が悪くなってしゃーないわこのクソが。マジきれそう。

330 :NAME IS NULL:2006/06/26(月) 20:52:11 ID:???
offsetが使えないだけでクソと言い切れる程保守性が悪くなるだろうか

331 :NAME IS NULL:2006/06/26(月) 20:57:04 ID:???
>>330
いやさ、ページ遷移を作る時にWhere句が多い場合、topで絞りこむと
Query文が見づらくなるんだわ。
offsetまではいかないまでも、Oracleみたいにnumrowsレベルでもいいから、もっと簡単な裏道がほしかった。


332 :NAME IS NULL:2006/06/26(月) 20:57:38 ID:???
すまん。俺は日本語がクソだが。荒らし気味になってスマソ。

333 :NAME IS NULL:2006/06/26(月) 21:49:57 ID:0i/5G9VY
>329
ストアドプロシージャ使えばいいじゃん。
一時テーブル+IDENTITY 使えばよ。

334 :NAME IS NULL:2006/06/27(火) 14:44:02 ID:???
演算にエイリアスを使う方法はないんですか?
SELECT aho AS A , hoge AS B , A+B AS C FROM fuga;
みたいに。

335 :NAME IS NULL:2006/06/27(火) 14:49:54 ID:???
>>334
SELECT A , B , A+B AS C FROM (SELECT aho AS A , hoge AS B FROM fuga) fuga
あんまり意味ないな。

336 :NAME IS NULL:2006/06/27(火) 15:40:32 ID:???
335
ありがとうございます!
ACCESSなら直接エイリアスを使えたのに、SQLSERVERだと使えなくて困っていました。


337 :NAME IS NULL:2006/06/28(水) 16:01:54 ID:???
初歩的な質問で失礼します。
今回初めてSQL Serverを使うのですが、
Money型って使って何かメリットありますか?
ちなみにバージョンは2005です


338 :NAME IS NULL:2006/06/28(水) 17:01:07 ID:???
>>337
高精度、小領域。
とりあえず判らない時は BOL(Books Online) を開くクセを付けると良いよ。

339 :337:2006/06/28(水) 18:01:19 ID:???
>>338

ありがとうございます。
decimalだと長さ19のところが8で済むということですね。

続いて質問で申し訳ないですが、
メリットはそれだけでしょうか?
逆にデメリットのようなものはあるのでしょうか。


340 :NAME IS NULL:2006/06/29(木) 19:19:39 ID:???
小数点の長い計算が出来ない

小数点以下で精度を求められるときびしい

341 :NAME IS NULL:2006/06/30(金) 12:05:05 ID:???
データサイズが大きくなりすぎたので、該当すると思われるテーブルを
削除したのですが、一向にサイズは小さくなりません。
他にどんなアクションが必要になるのでしょうか?
初歩的な質問ですいません。。

342 :NAME IS NULL:2006/06/30(金) 12:55:13 ID:???
>>341
DBCC SHRINKDATABASE

343 :341:2006/06/30(金) 13:19:20 ID:???
>>342
ありがとうございます!
解決できました。

344 :344:2006/06/30(金) 20:13:53 ID:xfwuZM/n
ヽ(`Д´)ノウワァァン!! Access2003 ADP+MSDE2000 で、一時テーブルにデータを入れて
フォームに連結してフォームから内容を更新しようとしたら、db_owner の権限を
持つアカウントなら更新できるのにそれ以外のアカウントでログインしてるとなぜか
「このレコードセットは更新できません。」ってステータスバーに出てきて更新できないyo!!

〜再現手順〜
1)フォーム1 を作って、開くときにこんなプロシジャを貼り付ける
Private Sub Form_Open(Cancel As Integer)
Dim RS As New adodb.Recordset
CurrentProject.Connection.Execute "create table #hoge" & _
"(id integer primary key, name varchar(10))"
CurrentProject.Connection.Execute "insert into #hoge " & _
"values(1, 'mona')"
RS.Open "#hoge", CurrentProject.Connection, adOpenStatic, adLockOptimistic
Set Forms("フォーム1").Recordset = RS
End Sub

2)フォーム1に ID と name 列をコントロールソースにしたテキストボックスを追加。
3)やおら フォーム1 を開く。
4)フォームから内容を変更できない。しかし、VBA でSQLを飛ばすと INSERT も UPDATE も自由自在。
 db_owner なアカウントならフォームから内容を更新できる。

 全ユーザに db_owner つけるのはアレすぎるので、だれか回避の方法を
知っていたら教えてください…

345 :NAME IS NULL:2006/06/30(金) 23:59:35 ID:???
>>344
saで実行。


346 :NAME IS NULL:2006/07/01(土) 10:57:19 ID:60RgFSxW
SQLServerってデッドロックよく発生しませんか?
ただ単に俺がアフォなだけ?
特にクラスタ構成だとデッドロックが発生しやすいって聞きましたがマジっすか?
SQLServer2000です。

みんなデッドロックが発生しないように気をつけてることって何ですか。
テーブル更新順序はきちんと決めてますか?どんなルールで決めてます?

347 :NAME IS NULL:2006/07/01(土) 11:07:38 ID:???
>>346
ロック解除待ちと、デットロック、別のトランザクションがデータを更新したことによるトランザクションの失敗。
この辺を全部ごちゃ混ぜにしてデットロックと勘違いしている人が多いが、
マルチバージョニング方式に比べて共有ロック方式のSQLサーバーが多いのはロック解除待ち。
あとの二つはさほど変わらない。デットロックが多いとするとアプリの作り方に問題あり。

クラスタリングに関しては聞いたことが無いけど、SQLサーバーのフェイルセーフクラスタリングのことなら
基本的には片方は待機してるだけだからデットロックが増えることは考えにくい。

348 :NAME IS NULL:2006/07/01(土) 11:37:25 ID:???
>>347
訂正 フェイルオーバークラスタリング

別のトランザクションがデータを更新したことによるトランザクションの失敗というのは
SQL Serverのクライアントカーソルもしくはサーバーカーソルなどで楽観的排他を使ったときと、
OracleでSerializableトランザクションを使ったとき起きる。

349 :344:2006/07/01(土) 13:35:24 ID:???
>345
Σ(゚Д゚ )そいつは名案気がつかなかった早速帰ってやってみよーッと!!

350 :NAME IS NULL:2006/07/01(土) 15:28:46 ID:???
ストアドプロシージャーによる変数代入について質問させてください。
{
@intID Int
}
As
DECLARE @intLEVEL Int
SELECT @intLEVEL = LEVEL FROM M_USER WHERE ID = @intID --(1)
IF @intLEVEL = 1
BEGIN
SELECT HOGE1,HOGE2,HOGE3 FROM T_HOGE WHERE HOGE_ID = 1 --(2)
END
ELSE(略)

このようなストアドを作りASP.NETから呼び出し、(2)の結果をDataSetに格納しようと考えています。
しかし、実際には(1)の検索結果もDataSetに格納されてしまいます。
SELECT以外でテーブルの値を変数に代入する方法は無いでしょうか?

351 :NAME IS NULL:2006/07/01(土) 16:29:32 ID:???
>>350
SET @intLEVEL =  (SELECT LEVEL FROM M_USER WHERE ID = @intID) 

352 :350:2006/07/01(土) 16:53:18 ID:???
>>351
サンクス

帰ったら早速試して見ます。

353 :NAME IS NULL:2006/07/02(日) 16:45:19 ID:LR878fe9
>>346
>みんなデッドロックが発生しないように気をつけてることって何ですか。
>テーブル更新順序はきちんと決めてますか?どんなルールで決めてます?
俺も気になるんだが、ルールってあるの?

354 :NAME IS NULL:2006/07/02(日) 17:40:29 ID:???
同じ呼び出し順で。


355 :NAME IS NULL:2006/07/02(日) 22:08:27 ID:zA3BgFa9
SQL Server 2000で、
「現在のトランザクションのトランザクションID」
(=トランザクションごとに一意な識別子)
を取得することはできませんか?

SQL Server 2005だと sys.dm_tran_current_transactionビューを利用できるのですが、
2000ではそれに準じるものを見つけられませんでした


356 :NAME IS NULL:2006/07/02(日) 23:12:28 ID:???
MSDE 2000のデータをSQL Server 2005 Express にコンバートしたいのですが、手順がわかりません。
MSDE でBackupしてSQL Server 2005 ExpressでRestoreしてみたのですがだめでした。

ぐぐってもみましたがどうも見当たりません。

ご教授おねがいいたします。

357 :NAME IS NULL:2006/07/02(日) 23:36:46 ID:???
>>356
SQLServer2000互換のデータベース作成してそこに同じテーブルつくってやっても駄目?

358 :NAME IS NULL:2006/07/03(月) 02:12:09 ID:???
>>356
一番簡単なのは2000からデタッチして、2005にアタッチ。

359 :なな子:2006/07/03(月) 09:25:23 ID:SRsT2II+
ALTERできるオブジェクト権限を与えるにはどうしたらいいでしょうか?
よろしくです。

360 :なな子:2006/07/03(月) 10:11:28 ID:SRsT2II+
ALTER TABLEできる権限です。。。


361 :NAME IS NULL:2006/07/03(月) 10:18:27 ID:XoYZ+VD3
トランザクションがcommitされた直後に
あるストアドプロシージャを走らせたいのですが、
なにかうまい手はないでしょうか?
SQL Server 2005


362 :344:2006/07/03(月) 11:54:39 ID:???
>345
 Windows 統合認証を使う方針なので、sa 案は却下ですた。

 とりあえずログインするアカウントが tempdb 上の db_owner になるように
すればフォームから一時テーブルの Recordset を更新できるようになったけれど、
今度はサービスが再起動すると tempdb の権限がリセットされてしまう問題が…
 tempdb に必要な権限を付与するプロシジャを作って起動時に実行するよう
設定しようとしたら、今度はプロシジャ内で USE が使えないという罠に当たりました。

 起動時に tempdb の権限をうまく書き換える方法や、それ以外の方法で
Access 2003 のフォームからレコードセットを更新可能にするうまい方法を
ご存知でしたら、ぜひ教えてください。

363 :NAME IS NULL:2006/07/03(月) 12:44:55 ID:???
>357
>358

ありがとうございます。

今回は、MSDE、SQL Server 2005を両方インストールして、
Management Studio
にて、バックアップ→復元でうまくいきました。


364 :NAME IS NULL:2006/07/05(水) 00:08:11 ID:???
SQL Server 2000 のトリガで、レコードが INSERT, UPDATE, DELETE された時
よりも細かく、たとえば、あるテーブルのあるフィールドが UPDATE された時、
などのようにレコード単位ではなく、フィールド単位にトリガの起動を
行なう事はできますか?

365 :NAME IS NULL:2006/07/05(水) 03:50:17 ID:???
>>364
直接その機能は無いので、代わりにUPDATE()関数を使って判定。
IF (UPDATE(col1) OR UPDATE (col2))
BEGIN
 処理
END


366 :NAME IS NULL:2006/07/05(水) 17:14:12 ID:???
sql server2000+windows2000serverで
あるテーブルがいつどんなSQL文でどういうロックがかけられていつロック解除されたのか
ログをとりたいのですが、どうやればいいのでしょうか


367 :NAME IS NULL:2006/07/05(水) 21:14:49 ID:???
処理に書き出す文をそのつど追加すればいい

368 :NAME IS NULL:2006/07/05(水) 22:15:13 ID:???
>366
SQLプロファイラでドウヨ

でもどのテーブルに、は出なかったっけかな

369 :NAME IS NULL:2006/07/05(水) 22:30:53 ID:???
>>368
レスありがとうございます

プロファイラも検討したのですが、
いつロック解除されたのかがわからないのと
ロックが行ロックとか共有とかが多分わからないので
欲しい情報が手に入らないです。


370 :NAME IS NULL:2006/07/10(月) 11:15:42 ID:y5JykUEH
>>362(>>344)
tempdbは起動時に再作成されるから、ユーザは初期化される。

従ってmodelデータベースにAccess
で使用するログインIDをb_owner権限で作成すれば良い。


371 :NAME IS NULL:2006/07/10(月) 11:16:19 ID:???
s/ログインIDをb_owner/ログインIDをdb_owner

372 :NAME IS NULL:2006/07/10(月) 11:24:08 ID:???
>>362(>>344)
ただし、modelデータベースに作成されたdbオブジェクトは、
新規DBを作成した場合、一緒にそのDBに作成されるから、
必要でないユーザはドロップしなければならない。


373 :NAME IS NULL:2006/07/10(月) 16:22:26 ID:irmUM/Og
SQL Server Management Studio Express でアカウントの追加や設定、削除を行っていたところ、
「ユーザー’サーバー名\ログイン名’はログインできません」となってログインすることすらできなくなりました。
Visual Studio 2005 のほうでも「規定のデータベースにアクセスできませんでした」となって、
データベースさえ開くことができなくなりました。
どうすればログインできるようになるのでしょうか??
あと、SQL Server 2005 のアカウントの設定が難しいのでアカウントの設定方法などの説明している
ホームページがあるのなら教えてほしいのです><

374 :NAME IS NULL:2006/07/11(火) 00:14:13 ID:???
どなたかご存知の方がいらしたら情報ください。

SQLSERVER2000とSQLSERVER2005間にてレプリケーション設定をした後
実行を行ったのですが下記のエラーがでて出てしまいます。

<中略>レプリケーション エージェントでエラーが発生しました。
レプリケーション エージェントはジョブ ステップの再試
行間隔中に再起動するように設定されています。<以下略>

同じようなエラーに遭遇した方、いらっしゃいますでしょうか。
解決法御座いましたら指南お願いいたします。

375 :344:2006/07/11(火) 09:58:16 ID:???
>370,372
 やはり model に権限つけておくしかないでしょうかね…。 >372 にあるように
その後 create した DB にも権限が引き継がれてしまうのを嫌っていました。
 しかし、これ以上 DB を増やすことも当面無いだろうし、他のユーザに
create database 権限を与えているわけでもないので、とりあえず
model に db_owner で追加しておくやり方で考えます。ありがとうございました。

376 :NAME IS NULL:2006/07/11(火) 10:33:45 ID:???
テーブルには、制約を設けることで、データの整合性を持たせることが、できる。
たとえば、主キー制約なら重複したデータを排除できる。
しかし、ビジネスモデルの整合性などは、困難である。このような場合には、トリガー機能を利用するとよい。
次の、テーブルt1、t2に合計金額(sum)と明細金額(f1)の制約を設けたい。

t1 t2
no   sum     no    f1
1 100      1 50
1 200      1 50
         2 100
          2 50
          2 50
t2のf1フィールドは売上明細金額でnoは伝票番号である。
t1のnoは、t2のno(伝票)を表し、sumはその合計が格納される。
t2テーブルのf1が更新された場合、
t1のsumフィールドを更新する関数(プロシジャ)tf()が定義されている場合。トリガーを定義するSQLを答えよ。

CRATE TRIGGER トリガー名 ○ INSERT OR ○ on ○
for each row execute procedure tf()

ア.UPDATE イ.DROP ウ.AFTER エ.BEFORE
オt1 カ t2



377 :NAME IS NULL:2006/07/16(日) 15:00:05 ID:???
SQL-Serverの負荷テスト、皆さんどうやっていますか?

378 :NAME IS NULL:2006/07/19(水) 11:49:44 ID:???
SQL Server アンインスコして、再度同じバージョンの
SQL Server インスコしたら、以前使っていたデータベース
のファイルは消されてしまいますか?
それとも再び使えるようになりますか?

今は念のため全部テキスト(SQL命令文、ほとんど insert 文)
にダンプしているんですが、ちょっと面倒くさい。

379 :NAME IS NULL:2006/07/19(水) 12:05:03 ID:???
>>378
ファイルが残っているなら大抵アタッチすれば使える。
実際にやるときはアンインストール前にデタッチして別の場所にコピーしておいたほうが安全。
dbo以外のユーザーを使っているならその辺の再設定は必要。

380 :NAME IS NULL:2006/07/19(水) 19:28:49 ID:Q3VImW7n
SQLServer2005を使用してます。

プロファイラで出力するログを、CSVとかテキスト形式で出力することは可能でしょうか?

メモ帳や秀丸などのエディタでも、ログファイルの内容を確認したいのです。


381 :NAME IS NULL:2006/07/20(木) 11:49:44 ID:oOcpS5y7
MySQLのReplaceみたいにデータがあるときはUPDATE、データがないときはINSERTになる命令は
MSSQLSERVER2000にはないのでしょうか?
調べてみるとRESTOREでファイルの復元が〜という今回やりたいこととは違うものしか載ってないです。


382 :NAME IS NULL:2006/07/20(木) 15:21:52 ID:???
>>381
>>205,209-210

383 :NAME IS NULL:2006/07/20(木) 20:10:37 ID:???
ローカル環境で小規模DBを構築しています。
テーブル自体の数は少ないのですが、データを18万件近く空テーブルに追加しないといけません。
テキストファイルから、データをインポートしたときはうまくいったのですが、
そのテーブルをフォーマット変換しながら別のテーブルに全件追加しようとすると処理が3時間かかっても全然終わりません。

ローカルに環境を作った時点でまちがっていたのかなあ…
単純に全件追加したいだけなんですけど。

384 :NAME IS NULL:2006/07/20(木) 20:29:21 ID:???
>>383
肝心なことを書いてないから、やり方が悪いとしかいえない。
その処理のためにどんなツールや言語を使ってるのかな?それともSQLだけで処理してる?

385 :NAME IS NULL:2006/07/20(木) 20:48:26 ID:???
>383
384にほぼ同意だけど、INDEXやTRIGGER作ってるなら、一旦消してから
あとでINDEX作るなりTRIGGERに対応する処理するなりしたほうがいいぞとだけ言っておく。
クエリアナライザ上で流してるなら、どこでコストかかってっか調べてみれ。

386 :NAME IS NULL:2006/07/20(木) 20:49:39 ID:oKg9alEP
ID
---
2
null
1

というテーブルで、正順かつnullが最後になるようソートしたいのですが、

SELECT ID FROM foo ORDER BY ID
とソートをかけると下のようになります。

null
1
2

SELECT ID FROM foo ORDER BY (CASE WHEN ID Is Null THEN 1 ELSE 0 END), ID
なら意図した通り

1
2
null

となるのですが、これよりスマートな方法で意図する通りソートできませんか?

387 :NAME IS NULL:2006/07/20(木) 21:01:29 ID:???
>386
何をどうしたらおまいさんがスマートと感じるのかわからんが、
とりあえず他の方法が欲しいってことなら、

SELECT IDENTITY(1,1) TID, ID
INTO #TBL
FROM foo
WHERE ID IS NOT NULL
ORDER BY ID

INSERT INTO #TBL (ID)
SELECT ID FROM foo WHERE ID IS NULL

SELECT ID FROM #TBL ORDER BY TID

という方法もある。

複雑なときはCASE式を弄繰り回すより
こっちの方が何やってるかがわかりやすい場合もある。

388 :NAME IS NULL:2006/07/21(金) 09:05:00 ID:???
>>387
テーブル作るって手があったんですね、ありがとうございます。
てかIDENTITY列ってこうやって追加できたんだ…。

389 :NAME IS NULL:2006/07/21(金) 13:06:03 ID:Dn6RIwww
>>386

SELECT ID FROM foo ORDER BY ISNULL(id, 9999)


390 :NAME IS NULL:2006/07/21(金) 15:09:56 ID:???
   1
   2
   3
   :
9998
(null)
(null)
(null)
9999

391 :NAME IS NULL:2006/07/21(金) 15:31:37 ID:???
>>386>>390
SELECT t.ID
FROM foo t
ORDER BY ISNULL(t.ID, (SELECT MAX(t2.ID) + 1 FROM foo t2))


392 :NAME IS NULL:2006/07/21(金) 16:20:22 ID:Dn6RIwww
>>390
ワロタ


393 :NAME IS NULL:2006/07/21(金) 20:42:48 ID:???
>391
なんかもう、やけくそやなw
ID NUMBER(4,0) で、すでに 9999 が入ってたら、
オーバーフローのエラーでこけるぞw

394 :NAME IS NULL:2006/07/21(金) 21:18:24 ID:???
select 0 as f1, ID
from t
where ID <> null
union all
select 1 as f1, ID
from t
where ID = null
order by f1, ID


395 :NAME IS NULL:2006/07/21(金) 22:20:52 ID:O1DoGmnz
特にSQLServerをシャットダウンせずにWindowsをシャットダウンしても
SQLServerは正常にシャットダウンされますか?

396 :NAME IS NULL:2006/07/21(金) 23:08:10 ID:???
>394
出力フィールドが増えてるがなw

>395
Windowsのシャットダウンの仕方による。

397 :394:2006/07/22(土) 08:56:34 ID:???
>>396
フィールド削りたいなら、selectで囲みなさい。
つか、そこまで書かないとわかんないのかー

398 :NAME IS NULL:2006/07/22(土) 10:09:10 ID:???
>397
わかるけどさ、プラン見たら、へこむよ。

399 :NAME IS NULL:2006/07/22(土) 14:17:53 ID:???
>>398
サブクエリを使ってもフィールドを減らすぐらいでプランはそんなに変わらない。
この程度でいちいち中間テーブルを作ったりはしないと思う。
むしろやばいのはこの辺じゃね? is null つかえよ〜〜
where ID <> null  where ID = null 


400 :NAME IS NULL:2006/07/22(土) 14:19:41 ID:???
>399
'is null' と '= null' って動き違うのん?
教えておくれ。

401 :NAME IS NULL:2006/07/22(土) 14:38:30 ID:???
>>400
NULLを含む比較演算はtrueでもfalseでもないunknownを返す。
NULL = NULL は常にunknownになるため where xx = null がtrueになることはない。
ただし MSSQLで set ANSI_NULLS OFF の場合は trueになる。

402 :NAME IS NULL:2006/07/22(土) 16:12:13 ID:???
>401
へぇー!勉強になったよ、ありがとう。
Is Nullしか書いたことないけどさ、正しい選択だったみたいだねー。

403 :NAME IS NULL:2006/07/23(日) 12:21:08 ID:???
たまたま

404 :NAME IS NULL:2006/07/23(日) 16:07:04 ID:???
便所質問
SQLserverで長さ0の文字列は、NULL扱いになるの?


405 :NAME IS NULL:2006/07/23(日) 18:13:31 ID:???
>>404
なんないよ


406 :NAME IS NULL:2006/07/23(日) 19:35:17 ID:???
ふーん
OracleはNULLになるけどね。


407 :NAME IS NULL:2006/07/23(日) 20:19:49 ID:???
>406
Oracleは長さ0の文字列 is NULLでもtrueにしちゃうだけで、
カラムにデータを入れるときは長さ0の文字列とNULLは不思議と別扱いになってるんだよ。
別扱いにしてるのなら、ちゃんと比較式でも別扱いにすればいいのにね。

408 :NAME IS NULL:2006/07/23(日) 21:30:58 ID:???
>>407
9iで試してみたけど、
’’で代入したデータはNULLで扱われるよ。
NULLで扱われるから、=’’は真にならない。

移行組みは気を付けんとはまるねw


409 :NAME IS NULL:2006/07/24(月) 01:17:24 ID:???
SQL server2000とVB6やC#の環境で、
bcp "select * from テーブル where あれがああ" queryout

というような「条件指定してbcp出力」というのを、SQLDMOでやりたいのですが、
いろいろ調べたんですが、
「ビューを作って、View.ExportData(BulkCopy)」
という方法しか見つかりませんでした。
SQLDMO.DataBase.Views.Add(View)でビューは作れることは作れるのですが
「一時ビュー」みたいなのはないので、常に本物のビューを作ったり消したり
しなきゃならなくて、どうも納得いきません。
エラー処理とかを考えるとBCPコマンドをシェル実行するわけにも行きません。
どうしたらいいでしょうか。
SQLDMO以外で出来るんだったらそれでもいいです。


410 :NAME IS NULL:2006/07/24(月) 14:01:28 ID:???
SQL Serverで、削除されたデータ領域の最適化ってどうやるんでしょう?
PostgreSQLでのVACUUMみたいなことをやりたいのですが。

411 :NAME IS NULL:2006/07/24(月) 14:35:06 ID:???
>>410
レコードは8Kのページ、8ページのエクステントといった固定の単位で管理をしていて、
空きページの再利用は自動で行われる。このためVACUUMは不要。
反面、固定長のページ管理なのでページサイズを超えるレコードの扱いに制限が出たり、
レコードサイズによっては無駄な領域が出来てしまう。
索引の断片化の解消なら DBCC DBREINDEX か ALTER INDEX REBUILD
未使用の領域をOSに返すなら DBCC SHRINKDATABASE (断片化の解消にはならない)

412 :NAME IS NULL:2006/07/24(月) 17:36:57 ID:???
>>411
レスありがとうございます。
戴いた情報でググってみます。

413 :NAME IS NULL:2006/07/24(月) 21:10:11 ID:???
>409
???
やりたいコトは、クライアント側でデータをテキストファイルに落としたいってことだよな?
お前さんの書いていることは、一時ビューを思いつくのに一時テーブルを思いつけないとか、
エラー処理の書き方がわからないとか、そんな風にしか見えないんだけど?

414 :NAME IS NULL:2006/07/25(火) 11:52:38 ID:wEpeM7PJ
現在、個人情報と成績をまとめたテーブルがあります。
個人情報には姓、名、生徒番号が記録されていて成績には生徒番号、実施テスト名、教科ID(0〜4で教科を表す)、
得点が記録されています。
これを外部結合と内部結合を使って、1行で生徒一人の成績を表示する方法がわかりません。
現状だと内部結合が上手くできないのでAAさんとBBさんの表示のとき

姓、名、生徒番号、実施テスト名、 教科ID 、得点
A、A、生徒番号1、実施テスト名、教科ID=0、得点
A、A、生徒番号1、実施テスト名、教科ID=1、得点
・・・
B、B、生徒番号2、実施テスト名、教科ID=4、得点  となってしまいます。

表示したいのは・・・
A、A、生徒番号1、実施テスト名、教科ID=0の得点、教科ID=1の得点、・・・教科ID=4の得点
B、B、生徒番号2、実施テスト名、教科ID=0の得点、強化ID=1の得点、・・・強化ID=4の得点
という感じです。


415 :414:2006/07/25(火) 11:57:32 ID:wEpeM7PJ
個人情報テーブルのデータ

姓、名、生徒番号
A、A、1
B、B、2
C、C,、3 ・・・

成績テーブルのデータ
生徒番号、実施テスト名、教科ID、得点
1     、       1、  0  、50
1     、       1、  1  、50
1     、       1、  2  、50

このように記録されています。

416 :NAME IS NULL:2006/07/25(火) 12:42:20 ID:wvhDqWCH
>>415

select
  A.姓,
  A.名,
  A.生徒番号,
  (select B.得点 from 成績テーブル B where B.教科ID = 0 where A.生徒番号 = B.生徒番号) as 教科ID=0の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 1 where A.生徒番号 = B.生徒番号) as 教科ID=1の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 2 where A.生徒番号 = B.生徒番号) as 教科ID=2の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 3 where A.生徒番号 = B.生徒番号) as 教科ID=3の得点
from
  個人情報テーブル A
where


417 :415:2006/07/25(火) 15:53:22 ID:wEpeM7PJ
>>416
サブクエリの中にWhereが2つあると言われてエラーになりました。
でも考え方は分かったのでやってみたのですが、今度はサブクエリの中身が変わりません。
(生徒番号が変わったのだからサブクエリの中身も変わってほしいけど1人目のデータのままになっている)

表示したいのは・・・
姓、名、生徒番号、実施テスト名、教科ID=0の得点、教科ID=1の得点、・・・教科ID=4の得点
A、A、     1 、       1 、AのID=0の得点、AのID=0の得点、・・・AのID=4の得点
B、B、     2 、       1 、BのID=0の得点、BのID=0の得点、・・・BのID=4の得点

現状は・・・
姓、名、生徒番号、実施テスト名、教科ID=0の得点、教科ID=1の得点、・・・教科ID=4の得点
A、A、     1 、       1 、AのID=0の得点、AのID=0の得点、・・・AのID=4の得点
B、B、     2 、       1 、AのID=0の得点、AのID=0の得点、・・・AのID=4の得点
となってしまいます。

バージョンはMSSQL2000、 OSはWinXP Proです

418 :416:2006/07/25(火) 16:15:57 ID:???
>>417
ごめん。
Where句を2重で入れちゃってた。
ところで、オマイが書いた表示したいのと現状の違いが解らないのだが? どこか違ってるか?


↓SQL文を修正した。これでも駄目か?

select
  A.姓,
  A.名,
  A.生徒番号,
  (select B.得点 from 成績テーブル B where B.教科ID = 0 and A.生徒番号 = B.生徒番号) as 教科ID=0の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 1 and A.生徒番号 = B.生徒番号) as 教科ID=1の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 2 and A.生徒番号 = B.生徒番号) as 教科ID=2の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 3 and A.生徒番号 = B.生徒番号) as 教科ID=3の得点,
  (select B.得点 from 成績テーブル B where B.教科ID = 4 and A.生徒番号 = B.生徒番号) as 教科ID=4の得点
from
  個人情報テーブル A


419 :415:2006/07/25(火) 16:38:51 ID:wEpeM7PJ
>>417
現状のほうはBさんの行にAさんの成績が入っちゃってます。
(後に続くCさんの成績もAさんの成績になってる)
やりたいことはAさんの行にはAさんの成績、
Bさんの行にはBさんの成績、といった具合です。

自分のSQLだと全成績がAさんの物になってしまうので少しいじってみたらサブクエリは複数の
結果を返えせないと怒られました。

書いてもらったSQLでやってみたら列のプレフィックスがテーブル名と一致しないかクエリ内の別名と
一致しないと怒られました。


420 :NAME IS NULL:2006/07/25(火) 19:20:07 ID:hUCbunzt
select A.生徒番号, A.姓, A.名, B.得点 教科0得点, C.得点 教科1得点, …
from 個人情報テーブル A left join
(select 生徒番号, 得点 from 成績テーブル
where 教科ID = 0) B on A.生徒番号 = B.生徒番号 left join
(select 生徒番号, 得点 from 成績テーブル
where 教科ID = 1) C on A.生徒番号 = C.生徒番号 left join
  :

多分こっちのほうが速い。
検証してないので動く保障は0だけど。

421 :NAME IS NULL:2006/07/25(火) 20:53:00 ID:???
SELECT
  A.姓,
  A.名,
  A.生徒番号,
  B.実施テスト,
  SUM(CASE B.教科ID WHEN 0 THEN B.得点 ELSE 0 END) 教科ID=0の得点,
  SUM(CASE B.教科ID WHEN 1 THEN B.得点 ELSE 0 END) 教科ID=1の得点,
  SUM(CASE B.教科ID WHEN 2 THEN B.得点 ELSE 0 END) 教科ID=2の得点,
  SUM(CASE B.教科ID WHEN 3 THEN B.得点 ELSE 0 END) 教科ID=3の得点
FROM
  個人情報テーブル A
  LEFT JOIN 成績テーブル B
    ON A.生徒番号=B.生徒番号
GROUP BY
  A.姓,
  A.名,
  A.生徒番号,
  B.実施テスト

422 :415:2006/07/26(水) 10:15:19 ID:I4dIgpNo
>>420 >>421
結局汎用性を落とすからやりたくない方法で対処することになりました。
テーブル構成を変更して生徒名とテスト名をキーにして科目ごとに得点を持つことになりました。
でもせっかく書いてくれたSQLなので個人的に解析して勉強させていただきます。
ありがとう〜

423 :どなたか教えてください:2006/07/26(水) 22:32:20 ID:zbMkU/Y3
これをDLして、セキュリティチェックしたんです。
http://www.vector.co.jp/soft/winnt/util/se257052.html

そしたら、serverサービスが有効になって危険という診断結果が出て。

(このサービスが起動されると、あなたのコンピュータのハードディスクがネットワーク上から読み取られる可能性があります。特にファイルサーバとして使用している場合を除いて、サービスを停止することを推奨します。)

それで、SQL serverが怪しいとおもって隔離していっかいアンスコしてまたやばいかもっとおもってシステム復元したら、戻らなくなりました。
毎回起動時に×で英語で警告が出ます。
これって個人用パソコンにも必要なんですか?削除していいですか?
おかしくなったんでとりあえずインストールしなおそうと思ってもどれがいいかわかりません。
どなたか教えてくださいペコリ



424 :NAME IS NULL:2006/07/26(水) 22:48:51 ID:???
>>423
他逝って下さいペコリ


425 :NAME IS NULL:2006/07/26(水) 23:23:52 ID:???
max server memoryを設定しても、タスクマネージャーで
見ると平気で20MBくらいオーバーしてしまう・・・

なぜ?

426 :NAME IS NULL:2006/07/27(木) 05:09:49 ID:???
>>425
max server memoryはバッファプールのサイズを指定するものなので、
ロードされたプログラムのコードやスタックのサイズは含まれない。
タスクマネージャのそれは全部含む。

427 :NAME IS NULL:2006/07/27(木) 07:31:01 ID:???
>>426
なるほど!ありがとうございました。

428 :NAME IS NULL:2006/07/27(木) 10:38:24 ID:el+8cIsB
便乗質問ですが、

min server memory を指定しても、タスクマネージャ上ではそれを下回るメモリしか占有してないのですが、
これは理由がありますか?


429 :NAME IS NULL:2006/07/27(木) 16:47:56 ID:WVGB03MI
AVG関数を使って計算をした結果なのですが、小数点第1位までの答えがほしくて
round(avg(mofu),1)としたのですが、42.25になるところが42になっていました(42.3に
なっててほしい)のですがいい方法はないでしょうか?

430 :NAME IS NULL:2006/07/27(木) 19:23:51 ID:???
>>429
mofuのデータ型は何?整数や実数型ならキャストしないとうまくいかない。
select round(avg(cast(mofu as decimal(5,3))),1) from xx

431 :NAME IS NULL:2006/07/27(木) 22:58:36 ID:W14bb2rh
ビューにインデックスを付けることは可能でしょうか?
調べたところ、エンタープライズでしかできないとか製品ページに書いてありました。
ですが、マネジメントスタジオかビューのフォルダを見るとインデックスというフォルダが
ぶら下がっています。

あと、インデックスを張ったテーブルで構成されたビューにはテーブルで張ったインデックスの
効果はあるのでしょうか?

432 :NAME IS NULL:2006/07/27(木) 23:18:16 ID:???
インデックスのある列で結合してれば、効果あるんでね?


433 :NAME IS NULL:2006/07/28(金) 11:50:06 ID:wPjT255z
>>431
バージョンは何? 2005として答える。

>調べたところ、エンタープライズでしかできないとか
そんな事はない。全てのエディションでサポート。
ただEEだと、テーブルに直接アクセスした場合でも、実行計画の判断でインデックス付きビューからデータを取得してくれる。


>あと、インデックスを張ったテーブルで構成されたビューにはテーブルで張ったインデックスの効果はあるのでしょうか?
基本的にはインデックスを使ってくれる。
ただ、複雑な構文のSQL文だと使ってくれない場合もある。
Management Studio(旧Enterprise Manager) で実行計画を確かめて。


434 :NAME IS NULL:2006/07/29(土) 21:17:53 ID:???
テーブル、関数、ストアドの所有者は dbo にするのと
アプリ用に作ったユーザのどっちにするのが一般的ですか?

435 :NAME IS NULL:2006/07/29(土) 23:25:10 ID:gJGeB6Zp
>>433
2005です。

http://www.microsoft.com/japan/sql/prodinfo/features/compare-features.mspx

インデックス付きビューの作成はすべてのエディションでサポート。
クエリ プロセッサによるインデックス付きビューのマッチングは Enterprise Edition のみ

ですね。

インデックス付きビューのマッチングは Enterprise Edition・・とはどんな機能なんでしょう?

436 :NAME IS NULL:2006/07/30(日) 00:42:06 ID:???
>>435
どのエディションでもインデックス付きビューを作ることは出来るし、
元になるテーブルが更新された場合は索引は更新される。
Enterprise以外のエディションで、インデックス付きビューに対して問い合わせをした場合は
普通のViewとして処理され、ビューにつけたインデックスは使われない。
>>433 の言ってることは最後の一行以外は賛同できない。

437 :433:2006/07/31(月) 21:05:36 ID:AzKGtDXT
>>436
>インデックス付きビューに対して問い合わせをした場合は普通のViewとして処理され、
そんな事あるわけないだろ。
それではEE以外の場合は、インデックス付きビューを作った意味が無くなると、少し考えれば解るだろ。


>>435
↓が解りやすい。
http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/ipsql05iv.mspx

>インデックス付きビューのマッチングは Enterprise Edition・・とはどんな機能なんでしょう?

【上記リンク先を引用】
 Enterprise Edition では、クエリが構造的にビューと一致していれば、クエリ自体はビュー名を指定して参照していなくても、
 クエリ プロセッサは、インデックス付きビューを使用してクエリを解決できます。
 その他のバージョンでは、ビュー名を指定して参照する必要があります。


438 :知を糞で返す:2006/07/31(月) 21:34:22 ID:mw76PMAn

なんでこんなにインチキの差があるわけw

439 :NAME IS NULL:2006/07/31(月) 21:54:33 ID:???
>>437
それはちょっと引用が足りてないな。
>また、インデックス付きビューのコンテンツを照会する場合は、ビューの参照に NOEXPAND ヒントを使用する必要があります。
この部分が重要。

サポートしてないと主張している人は実際に試してプランを取ったのだと思うのだけど、
SELECT * FROM インデックス付きビュー WITH (NOEXPAND) にしないと動作しない。
またVIEWに計算列などが含まれていた場合など条件によってはNOEXPANDヒントが適用できないことが有る。
VIEWを直接指定してまたは直接使用しなくてもオプティマイザがVIEWの索引を使用するかどうかを
判断する機能がEnterprise Edition限定の機能。

マッチングの部分は英語版で見てもマッチングと表記がある上、他のページではこの用語を使っている箇所
は見つからなかったので、ここのMS自身の説明があいまいなのだと思う。
俺的にはこのマッチングしないは、オプティマイザがプランを立てる上でインデックス付きビューを
探し当てる(マッチングする)ことをサポートしていないという意味で捉えている。

440 :NAME IS NULL:2006/07/31(月) 22:32:33 ID:???
高位バージョンとの差別化のために機能を封印してみたが抜け道が残ったといった感じだな

441 :NAME IS NULL:2006/08/02(水) 16:41:56 ID:???
どっかのバッチ処理で見つけた

(更新処理)
set @rowcount=@@rowcunt
set @error=@@error
if @error <>0 begin
(更新エラー処理)

もうね、アホかと


442 :NAME IS NULL:2006/08/02(水) 21:41:11 ID:???
>441
ワロスw

443 :441:2006/08/03(木) 08:43:26 ID:???
おっと失礼
×@@rowcunt
○@@rowcount

444 :NAME IS NULL:2006/08/03(木) 16:30:56 ID:5KiJik6U
PASSJ ってやる気が無いよな。

未だに メーリングリストにSQLServer2005Beta版があるし、
新しい記事も2000をベースにしてる。

2005版は5年ぶりのリリースで大ニュースなんだから、もっと盛り上がれば良さそうだけど、そんな記事は見当たらない。
新機能の紹介とかさ何も特集が無いよね。

PASSJのスタッフは、Oracle案件の仕事で手が離せなくなったのかな。


445 :NAME IS NULL:2006/08/03(木) 20:00:34 ID:???
>444
若いスタッフが育たない&若い回答者も育ってない。
年寄りばっかり頑張って息切れしているユーザーズグループってどうよ?

446 :NAME IS NULL:2006/08/04(金) 03:52:13 ID:x+YaY64N
セメスターで前期シルバー、後期ゴールドな講義って無茶?

447 :NAME IS NULL:2006/08/04(金) 10:03:13 ID:/AbN/Vig
accessからsqlserverとリンクしているのですが、
接続を切らない場合があるようです。

sqlserver側で接続を強制的に切断する方法はありますでしょうか?

448 :NAME IS NULL:2006/08/04(金) 11:54:31 ID:/AbN/Vig
判った「kill spid」だ
spidはsp_whoで求める

449 :NAME IS NULL:2006/08/04(金) 21:28:49 ID:???
だって2005、まだSP1も出てないじゃん

450 :NAME IS NULL:2006/08/04(金) 21:33:52 ID:???
工エエェェ(´д`)ェェエエ工

451 :NAME IS NULL:2006/08/07(月) 00:19:33 ID:CTIShSUu
>444
データベースサーバーは、新機能じゃなくて、安定度や信頼性が
肝心だよ

2005を宣伝していたら、MSの広告塔になって、ユーザグループじゃ
なくなるよ。
新機能が安定して動くとは限らないからね

SP4まで出ている2000を捨てて、2005に乗りかえる勇気はまったく無い。

このようなユーザが多いから、次期Windowsでは、動作保証が得られない
http://www.microsoft.com/japan/sql/howtobuy/sqlonvista.mspx

このような行為は、許せない!



452 :NAME IS NULL:2006/08/07(月) 09:32:16 ID:???
まあ、OracleもWindows版に限っては、対象OSの範囲が狭いけどな。
おそらく、Windows2007ではOracle9iは切り捨てられるだろう。


453 :NAME IS NULL:2006/08/07(月) 13:23:27 ID:???
>>451
まるでOSには安定度や信頼性が必要ないようなレスに見えるぞ
データベースの乗り換えにそこまで慎重になるのなら
OSの乗り換えも長期的にかまえて慎重に行けって

454 :NAME IS NULL:2006/08/07(月) 14:10:41 ID:???
>>449
>>449
>>449
>>449
>>449


455 :NAME IS NULL:2006/08/07(月) 15:14:45 ID:CL09duAY
>>453
メーカー製のPCサーバーを使い続けて、保守部品の入手が困難になって
しかたなくリプレイスしたときに、今使っているWindows2000/2003が
新しいサーバーではドライバ等の提供が無く動かないときに、
次期Windows上でも、SQL Server 2000 が動いてくれないと
困るっていう意味です。

だから、動作保証だけでも、して欲しかった。

もちろん、古い今の環境を使い続けるつもりなんだけどね


456 :NAME IS NULL:2006/08/07(月) 15:31:39 ID:???
>>455
つVirtualServer or VMware Server


457 :マイクロソフトの本音:2006/08/07(月) 16:01:30 ID:FR/XX9HP
>>455
新しいバージョンのDBMSが出来たんやんから、どんどん買いかえたらエエやん!
いつまでも、ごつー古いバージョンなんか使われたんでは、こちとら商売あがったりなんや!

ということで兄ちゃん、エンタープライゼズエディションを買うてくれや。
さらにOracleから移行してくれたら、まけたるさかい!
Oracleはコアライセンスで、うちはプロセッサーライセンスや。
お得やろ〜?


458 :NAME IS NULL:2006/08/07(月) 18:08:10 ID:???
SQLServer2005が出たのは、2005年の12月頃。
あれから8ヶ月以上も経過してるのに、本屋にマニュアルがほとんど無いのはどういうことだろうか。

それほど、めぼしい機能が多くないからか?
でもマイクロソフト側は、「5年もの歳月を掛けて革新的な機能が多く搭載された」 と言ってる。
何なんだ?

いまいち盛り上がりに欠ける。
DBマガジンでも、Oracle10gの時と比べて扱いが非常に小さい気がする。


459 :NAME IS NULL:2006/08/07(月) 18:55:28 ID:???
>>451
MSの広告塔じゃん。

PASSJのスポンサー
http://www.sqlpassj.org/info/sponsor/default.aspx


460 :NAME IS NULL:2006/08/08(火) 09:47:19 ID:???
>>458
Windows Developer Magazine(ttp://www.shoeisha.com/mag/windev/)
のほうが.NET絡みで扱いが大きいな。実際に情報量はここが一番大きいのではないかと思う。


461 :NAME IS NULL:2006/08/08(火) 15:55:05 ID:???
Win2003R2 STD SP1 + SQLServer2005 SP1 の環境でSQLサーバを
構築している最中です。

旧DBの復元でMasterDBから行おうかとシングルユーザーモードで起動しようとしているのですが、
なぜか起動しません。

DOSプロンプトから
sqlservr -m
で起動すると、画面が流れていきますが、プロンプトが帰ってこない状態で
止まってしまいます。

Management Studio上からMasterDBをSingleに変更しようとしてもエラーがでて
変更できず・・・・・・

エラーの内容ですが5058のエラーとしか出てきません。
調べてみましたが、私の力量では発見できませんでした。

対応方法とかご存知でしたら教えていただければ助かります。
よろしくお願いします。

462 :NAME IS NULL:2006/08/08(火) 18:06:45 ID:v9aD+4hx
>>461
シングルユーザモードは、「SQLServer Configuration Manager」ツール の
SQL Server(MSSQLSERVER) サービスのプロパティ値を変更しないといけない。


右クリックのプロパティを押下
 ↓
詳細設定タブを選択
 ↓
「起動時のパラメータ」に、";-m" を追加
 ↓
OKボタンを押下
 ↓
サービスの再起動


これでシングルユーザモードになる。


463 :461:2006/08/08(火) 18:24:29 ID:???
>>462
無事にシングルユーザーモードに変更できました。

そうするとBOLの説明は間違ってるのか、前のSQL2000の話がそのまま残ってるのか、
よくわかりませんね・・・・・・

障害時用でBATを作ろうかとも考えていましたが、サービス起動時のオプション設定まで
行うにはちょっと危ないみたいです。(sqlservrで行ければ楽そうでしたが・・・・・・)

どうもありがとうございました。

464 :NAME IS NULL:2006/08/08(火) 18:35:03 ID:???
>>463
sqlservrで立ち上げるとコマンドプロンプトで動きっぱなしになり、とめる時は Ctrl-C でとめる。
戻ってこないのは正常な動作。

465 :NAME IS NULL:2006/08/08(火) 18:40:42 ID:???
>>358
亀レスかつ横レスだが、ほぼ同じ問題で悩んでたんで超助かった。
目から鱗だ。おまいは神だ。ありがとう。

466 :NAME IS NULL:2006/08/08(火) 18:44:43 ID:v9aD+4hx
>>463
BOLって↓か?
http://msdn2.microsoft.com/ja-JP/library/ms180965.aspx


試してみたけど、"sqlservr.exe -m" でシングルユーザモードになったぞ?


467 :461:2006/08/08(火) 18:45:14 ID:???
>>464
なるほど、戻らないのは正常動作なんですね

ただ、その状態でManagement Studioから接続できなかったのと、
SQLServer Configuration Managerでサービスが起動していなかったので、
ダメなのかなと思っていました。

その場合はOSQLからだったら接続できるんでしょうか。
ちょっと試してみたいと思います。


----------------こっからチラシの裏-------------------
旧DBがSQL2kで、2k時代のMasterDBを復元すれば移行も簡単じゃないか?!と思っていたのですが、
DB構造が異なっていて復元できないの当たり前でした。

移行方法また考えないと・・・・・・。

468 :NAME IS NULL:2006/08/09(水) 19:52:24 ID:???
うーむ

ビルゲイツがつくったのって
軍事とか医療とか航空機とか
コンピューターが止まったり誤動作すると人が死ぬ
しかも一人や二人じゃないってとこでは
まったく用がないと思うんだが

漏れ的には
はぁ?
ビルゲイツのつくったもんに信頼性?
てノリ


469 :NAME IS NULL:2006/08/09(水) 20:46:17 ID:???
>>413
どう見てもあなたが偉そうです。
ありがとうございました。


470 :NAME IS NULL:2006/08/09(水) 21:55:56 ID:???
>>468
どうみても夏厨です
本当にありがとうございました

471 :NAME IS NULL:2006/08/09(水) 23:33:10 ID:???
>>470
うむ、
飛行機に乗る機会のない喪前には
何の関わりもない話だな


472 :NAME IS NULL:2006/08/10(木) 09:50:43 ID:G4V9JOjZ
テスト飛行時にビルゲイシを飛行機に括りつけて飛ばせば良いんじゃね?


473 :NAME IS NULL:2006/08/10(木) 10:31:35 ID:???
ビルゲイツはWindows98のプレゼンで
ブルースクリーンを見せびらかしてたもんな

もうね、アホかと


474 :NAME IS NULL:2006/08/10(木) 15:06:51 ID:???
SQL Server 2005 Expressを使っています。
bcpでフォーマットファイル、テキストファイルを作成しました。
このフォーマットファイルを使って、テーブルの新規作成はできますか?

475 :NAME IS NULL:2006/08/10(木) 16:39:56 ID:???
>>474
新規作成はできない。

476 :NAME IS NULL:2006/08/10(木) 23:27:30 ID:???
空気読めよMSアンチ

477 :NAME IS NULL:2006/08/11(金) 06:58:35 ID:???
MS社員おつ


478 :NAME IS NULL:2006/08/11(金) 21:03:38 ID:???
そもそもDBMS搭載されている飛行機や医療器具があるのかね?
おまけにSQL Serverはビルゲイツは作ってないんだけど。
何でこんなうましかちゃんが沸いてるの?
真夏日で暑すぎるから沸いたのか?

479 :NAME IS NULL:2006/08/11(金) 21:12:39 ID:???
悪・即・斬


480 :NAME IS NULL:2006/08/11(金) 23:14:59 ID:???
社員おつ


481 :NAME IS NULL:2006/08/11(金) 23:25:23 ID:???
荒らしは放置で

482 :NAME IS NULL:2006/08/12(土) 11:19:39 ID:???
楽観的ロックで更新時にレコードをチェックしたいのですが
レコードのカラムにレコードのバージョンみたいなものは
特にありません。
こういう場合はチェックできないでしょうか?
SQL Serverが持っていてそれを利用することはできないでしょうか?

483 :NAME IS NULL:2006/08/12(土) 11:32:02 ID:???
更新日付とか使えば?

484 :NAME IS NULL:2006/08/12(土) 11:47:03 ID:???
timestampって使えそうだけど

485 :NAME IS NULL:2006/08/12(土) 13:02:45 ID:???
やはりそういうカラムがないとだめでしょうか?

486 :NAME IS NULL:2006/08/12(土) 16:25:25 ID:???
主キーさえしっかりあれば全カラム比較する方法で実現できる。ADO.NETでもこの方法をとっている。

487 :NAME IS NULL:2006/08/15(火) 10:51:52 ID:???
質問はこちらのスレでよいですか?
質問スレ等別にありましたらすみません。

tempdbの自動拡張プロパティを1MBづつ⇒10%づつに変更したくて、
Enterprise Managerから変更したのですが、変更が反映されません。
いろいろ調べたところ、MSのサポートページに
ttp://support.microsoft.com/kb/909375/ja
のようなページがありまして、このせいかと思い、記述されている
回避策(ALTER DATABASE)を実行してみました。
するとその時点では変更が反映されているようなのですが、
DBを再起動すると設定が元に戻ってしまいます。
tempdbはDB再起動時に再作成されるようなので、それで
設定が戻ってしまうのかな、と思うのですが、となると
設定する方法はないのでしょうか?
識者の方、回答お願いいたします。

環境は
OS:Windows2003Server Standard SP1
SQLServer:SQL Server 2000 Enterprise SP4
Enterprise Manager:Management Console 2.0 Version5.2
です。

長文すみません。
よろしくお願いします。


488 :NAME IS NULL:2006/08/15(火) 18:23:25 ID:???
>>487
割と有名なバグで、再作成の元になるmaster..sysaltfilesが書き換わっていないため起きるのですが、
怖くてよう触れませんわ。諦めて固定増分で使っております。
ttp://support.microsoft.com/kb/816939/ja

489 :NAME IS NULL:2006/08/15(火) 18:43:38 ID:TdMfMJ5H
SQLServer2005 です。

読み取り一貫性で処理を行う場合は、データベースに対し次のコマンドを実行することによって切り替わるそうですが・・・
ALTER DATABASE DB名 SET READ_COMMITED_SNAPSHOT ON;

これをトランザクション単位で切り替える事は可能でしょうか?


490 :NAME IS NULL:2006/08/15(火) 19:16:53 ID:???
>>489
それはデータベース単位なので無理。
SET TRANSACTION ISOLATION LEVEL SNAPSHOT で対応。

491 :NAME IS NULL:2006/08/15(火) 19:55:27 ID:TdMfMJ5H
>>490
ありがとうございます!
早速試してみます。


492 :487:2006/08/15(火) 21:33:17 ID:???
>>488
回答ありがとうございます!割と有名なバグなのですね。
調査が甘かったか…でもサポートオンラインを検索したときに
こんなの出てこなかったけどなぁ。

確かにsysaltfilesを書き換えるのは怖いですけど、ともかく試してみます。
ありがとうございました。

493 :487:2006/08/16(水) 15:49:29 ID:???
>>488
結果報告です。
どうやらうまくいった模様です。ありがとうございました。

494 :NAME IS NULL:2006/08/17(木) 14:02:13 ID:???
すみません。質問させてください。
ごく初歩的なことなんですが
シンプルなテーブルを作って
ファイルからデータを挿入しようとしているのですが
できないのでしょうか?
Postgresで言うところの

COPY テーブル名 FROM ファイル名

と言う動作です。


495 :NAME IS NULL:2006/08/17(木) 14:44:01 ID:???
bcp


496 :494:2006/08/17(木) 15:30:58 ID:???
>>495
ありがとうございます。

497 :NAME IS NULL:2006/08/17(木) 16:24:19 ID:F8GdWoXT
>>494
BULK INSERT


498 :NAME IS NULL:2006/08/17(木) 16:38:38 ID:???
すいません。
SQLServer2005でシノニム使おうかと思っているんですが、
ODBC接続でAccess2003からリンクテーブルを張ろうとしています。

BOLに「リンク サーバー上のシノニムを参照することはできません。」って
あるんですが、まさしくこれでしょうか。

こういったことを行うにはビューを別名で作ってあげるしかありませんか?

499 :NAME IS NULL:2006/08/21(月) 01:10:08 ID:kkIwFCrd
SQL鯖2000でログシッピングの設定をしているのですが保守計画の設定で
「unable to copy the initialization file to the secondary server」というエラー
が出て困ってます。
どうも主系から待機系のアクセス権が問題なようで....
主系から sp_cmdshell 'dir \\待機系\共有名' とやってもアクセスが拒否されましたと出ます。
OSレベルでは問題なくアクセスできてファイルコピーもできるのですが。
どうすれば権限を与えられるのでしょうか。


500 :NAME IS NULL:2006/08/21(月) 02:06:47 ID:???
>>499
よく知らないんだけど、SQLサーバってどのユーザでつなぎに行くんだろ?
「OSレベルでは問題なく」のユーザと同じなのかな?


501 :499:2006/08/21(月) 07:37:12 ID:kkIwFCrd
>>500
それが私もよくわかんないんです。どのユーザーでつなぎに行ってるかわかる方法
ってどうやって知るんだろ。

502 :NAME IS NULL:2006/08/21(月) 08:39:01 ID:???
>500-501
MSSQLSERVER サービスの起動アカウントだろう?

503 :NAME IS NULL:2006/08/23(水) 21:43:02 ID:???
だれか、ライセンスのことについて教えて下さい。
「SQL Server 2005 Standard Edition 」のプロセッサライセンス版
を購入して、サーバーにインストールして使用します。
使用後、そのサーバーが壊れて修理に出ている間、代わりのサーバーに
インストールして使用する場合、ライセンスは新しく購入する必要が
ありますか?
それとも、1台のサーバーで使用している限りは、新しくライセンス
が発生しないでしょうか。

よろしくお願いします。

504 :NAME IS NULL:2006/08/23(水) 22:21:11 ID:???
いるだろ。
理屈的には、クラスタのスタンバイ側に入れた場合と同じじゃないかな?


505 :NAME IS NULL:2006/08/24(木) 00:38:46 ID:???
ライセンスなんて(゜ε゜)キニシナイ!

506 :NAME IS NULL:2006/08/24(木) 02:07:53 ID:???
MSに聞くしか無いんじゃ?
ライセンスの話は他人に聞いてもてきとーな事しか言わないよ。

507 :NAME IS NULL:2006/08/24(木) 02:53:05 ID:???
この場合は完全な代機だからいらない。
クラスタやミラーリングの場合も完全なパッシブの場合はいらない。
ミラー側を問い合わせ専用で使っている場合は必要となる。
CPUライセンスの場合は代機やパッシブ側のCPU数は同等かそれ以下である必要がある。

MSやLARでも適当なことを行ってくることはあるがそれはたまたま担当の質が悪いケースなので、>>506 に同意。

508 :NAME IS NULL:2006/08/24(木) 09:09:08 ID:???
>>507
に追記させてもらおう

アクティブサーバ、スタンバイサーバとあってアクティブが壊れ、
スタンバイに切替を行った場合アクティブとスタンバイの機能が
入れ替わるよな?

で、旧アクティブは新スタンバイとして、旧スタンバイは新アクティブとして
そのまま運用していってもライセンス的には問題なし

どちらか片方がスタンバイであればな
もちろん、CPUの数とか問題になってくるけど、同じ構成ならOK

って、MSに電話して口頭だが確認をした経験がある
不安なら>>506

509 :NAME IS NULL:2006/08/24(木) 11:25:20 ID:???
>>504
は?


510 :NAME IS NULL:2006/08/24(木) 15:28:45 ID:WrmHQwXk
Windowsマシンから簡単なSQL文(select)を送ってそれのレスポンス(応答)を定期的に
測ってログを取りたい思っているのですが、いい方法ってあります?
1回きりのツールとかであれば、タスクやcronで動かせばなんとかなるとして。
ツールがあれば一番だが、なければ一から作るしかないか。


511 :NAME IS NULL:2006/08/24(木) 18:39:47 ID:???
>>510
使ってるのがSQLServer2000か2005かわからんが、クエリアナライザとか、
ManagementStudioとかのクエリで、実行プランってあるけどそれどうよ?
かなり正確に時間測れるぞ?

タスクで定期的に実行すればって自分で書いてるし、osqlあたりでBAT作れば
良いような気もする

検討違いな回答ならスマン

512 :NAME IS NULL:2006/08/24(木) 20:08:17 ID:???
レスポンスタイム≠処理実行時間
基礎中の基礎。


513 :NAME IS NULL:2006/08/24(木) 23:17:24 ID:???
2005はWindows2000にバンドルしている
ODBCドライバーで接続できまつか?

514 :NAME IS NULL:2006/08/24(木) 23:36:24 ID:???
>>513
2005で拡張された型や機能を使わなければ利用可能。2000との互換性はかなりあると考えていい。

515 :NAME IS NULL:2006/08/24(木) 23:40:19 ID:???
>514
レスどもです

516 :NAME IS NULL:2006/08/25(金) 14:10:00 ID:???
すいません、SQLServer2000から2005に切替を予定していますが、
関数・ストアド等が増えた、なくなったなど、まとめてるサイトとかって
ありますか?

517 :NAME IS NULL:2006/08/25(金) 16:19:06 ID:H71sYG3h
SQLServer2000にSP3aを当てようとしたのですが、
MDACをインストール中のところで、エラーが出てしまいます。
エラーメッセージは
「Microsoft Data Access Componentパッケージをインストールできませんでした」
と出ます。

MDACだけを単体で入れようとしたら、
MDAC2.6まではインストールできるのですが、
MDAC2.7、2.8はエラーで、途中でロールバックしてしまいます。

http://support.microsoft.com/default.aspx?scid=kb;ja;286442
これなども試したのですが、ダメでした。

何が原因なのか、ご存知の方いらっしゃいましたら
ご教示ください。

OSはWindows2000ProのSP4が当たっています。




518 :516:2006/08/25(金) 17:21:46 ID:???
自己レスですまん
そのあといろいろ調べたら↓で一覧になってました

ttp://msdn2.microsoft.com/ja-jp/library/ms143532.aspx

どうもお騒がせしました

519 :NAME IS NULL:2006/08/31(木) 23:50:39 ID:???
少しスレ違いかもしれませんが、質問です。

今研究でSQL SERVER 2005 JDBCを使ってるんです、何度javaの環境変数設定してもうまく使えません。
変だと思ってsqljdbc.jarをダブルクリックしたら「invalid or corrupt jarfile」って出て来ます。
何度ダウンロードしても結果は同じです。

このjarファイルはデフォルトで壊れてるんですか?それともこういう仕様なのか、何かjdkとかjreの問題なのでしょうか・・・?
どなたかご存知の方教えてください。


520 :NAME IS NULL:2006/09/01(金) 02:09:21 ID:dLuo+SQ3
長期間のログデータ等、大量のレコードが格納されているテーブルに検索を掛けたとき、
結果が40000件ヒットしたとして、2001件目〜4000件目…といったように検索結果の部分
を抜き出すことは可能でしょうか?
TOP指定は先頭〜件分、としかできないですよね…。

Javaで検索を掛けて結果をVectorなどのコレクションに格納し、そのコレクションを
JSPでimportして結果を表示させるようなことをしたいのですが、件数が多すぎると
OutofMemoryErrorでエラー終了してしまいます。

どなたかいい方法をご存知でしたら教えて下さい。

521 :NAME IS NULL:2006/09/01(金) 05:18:05 ID:???
>>519
ダブルクリックまたはjava -jar sqljdbc.jarでinvalid or corrupt jarfileが出るのは
META-INF以下のファイル名がなぜか小文字になっていてMANIFEST.MFが見つからないため。
そのままでも、クラスパス(java -cp hoge/sqljdbc.jar)を通して
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); とする分にはエラーは出ない。

522 :NAME IS NULL:2006/09/01(金) 05:58:21 ID:???
>>520
1.SqlDataReader reader = command.ExecuteReader() を使って不要な分は読み飛ばす。
2.SQLServer2005を使ってるならROW_NUMBER()を使う。
3.クラサバ系のアプリでセッションを開いたままに出来る場合は
IDENTITYでナンバリングした列を追加した一時テーブルを作って、そこに検索結果を流し込む。
あとはID列のFromToの問い合わせでOK。
結果は安定的でデータが増減した場合などで結果がクエリのたび変化するようなケース向き。
WEBアプリで使えないのが残念。

523 :NAME IS NULL:2006/09/01(金) 18:06:33 ID:???
>>520
直感で書くけど、これでいいんじゃないの?
SELECT TOP 4000 〜〜
NOT IN (SELECT TOP 2000 〜〜)

524 :519:2006/09/01(金) 21:07:20 ID:???
>>521
調べたところ、JDBCが認識しないのは単にSQLServer2000と2005クラスが微妙に異なってることが原因でした

com.microsoft.sqlserver.jdbc.SQLServerDriver (2000)
com.microsoft.jdbc.sqlserver.SQLServerDriver (2005)

こんな分かりにくい仕様変更すんなゲイツ

525 :NAME IS NULL:2006/09/01(金) 21:19:04 ID:???
>>524


526 :NAME IS NULL:2006/09/01(金) 22:34:53 ID:???
>>523
inは結果セットできてしまうので微妙じゃ
not existsを使うべし。

っつーか前スレあたりに書いてなかったっけ?

527 :NAME IS NULL:2006/09/01(金) 23:18:30 ID:???
サブクエリ内でTOPを使うときはINでもさほど変わらないよ。
EXISTSを使おうとして、INのときと同じ結果を得ようとしたら、サブクエリをもう一段深くネスとしないといけないし。

ttp://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/05/13/2216.aspx

528 :NAME IS NULL:2006/09/02(土) 11:17:03 ID:???
>>527
これとは若干シチュエーションが違うような…

でも同じwhere句、order by句が使われているなら
クエリキャッシュが効くのかな

家では確認できないなあ

529 :NAME IS NULL:2006/09/02(土) 16:20:17 ID:???
SQL Server2005について教えてください

Management Studio上で、システムデータベースで「テーブルを開く」が
グレーアウトして見ることができません

クエリアナライザでSelectすると参照はできるのですが、Management Studioで
見る方法があるのでしょうか?

ご存知のかたがいらっしゃいましたら教えてください

530 :NAME IS NULL:2006/09/02(土) 19:12:12 ID:???
トランスメタのCPUだと2005はインストール出来ないのか...orz


531 :NAME IS NULL:2006/09/02(土) 19:24:53 ID:???
ばっかじゃねぇのw


532 :NAME IS NULL:2006/09/02(土) 20:01:39 ID:???
トランスメタ熱いなw

533 :NAME IS NULL:2006/09/03(日) 08:05:14 ID:???
>>522
>結果は安定的でデータが増減した場合などで結果がクエリのたび変化するようなケース向き。 
>WEBアプリで使えないのが残念。 

検索に時間がかかる場合も含めて、WEBでこういう場合はどうするのがいいの?
SNAPSHOTサーバーカーソルか一時表を使ってWEBセッションをまたいでDBセッションを開いたままにしておく。
検索結果を普通のテーブルに持つ。タイムアウト分の掃除が必要。
セッションに検索結果か検索結果のキー配列を持つ。
フォームの隠しフィールドに検索結果のキー配列を持つ。

534 :NAME IS NULL:2006/09/03(日) 16:16:19 ID:???
サーバカーソルやDBセッションを開きっぱなし、というのは有り得ない。
隠しフィールドっていうのも裏側のデータを不用意にクライアント側に流してしまうのが微妙。
通信量も増えるし。
検索結果をテーブルに持つのもちゃんと上手く消せるかによるな。

というわけでサーバ側のセッション変数に持つっていうのがいいんじゃないか。
メモリは食うけど。

535 :NAME IS NULL:2006/09/03(日) 20:31:59 ID:???
2005を始めて使ってるんだけど、クエリアナライザなくなったの?
.Netで作られた管理ツール重くてかなわんな。
みんな変わりに何使ってるの?

536 :NAME IS NULL:2006/09/03(日) 21:42:01 ID:???
sqlcmd

537 :NAME IS NULL:2006/09/04(月) 08:13:40 ID:???
>>535
立ち上がりは遅いけどそれ以降は普通だと思うよ
PCのスペックの問題かも。

538 :NAME IS NULL:2006/09/04(月) 17:58:27 ID:tiyWzcto
DB server Error (select `inventory`)- Table '***.inventory' doesn't exist

とか出たんだが何だこれ('A`)
昨日まで正常に動いてたんだが

教えてエロい人orz

539 :NAME IS NULL:2006/09/04(月) 18:25:40 ID:???
管理ツール遅すぎるよな。起動に15秒以上かかって、思考が止まりまくる
ランチャから管理ツールにクエリファイルを渡して起動してるんだけど
15秒も待てないから他のことやってると渡したクエリファイルは無効扱いされ
ふと戻ってみると管理ツールが単体で偉そうにブランクで起動されている。
.NETでアプリ作ったことないけど、こんな漢字なのかね。

540 :NAME IS NULL:2006/09/04(月) 21:06:09 ID:???
我慢して立ち上げっぱなしにしといたらどうか

541 :NAME IS NULL:2006/09/04(月) 21:17:54 ID:???
Core2Duo買え


542 :535:2006/09/05(火) 00:17:22 ID:???
>>541
うへ、CoreSoloだぜwwwwwwwwww

sqlcmdなんてあったのか。SQL Plusのまねなんてしなくて良いのにね。
試してなんだけど、2000のクライアントだけいれで、2005のサーバー
にクエリアナライザで繋がらないのかな。
ダメなら、2000から2005にリンクサーバーで繋いで・・・、って
下Versionから上Versionがそもそも出来るかわがんねー。

誰か、恵まれた環境の人レポートキボンヌー!


543 :NAME IS NULL:2006/09/05(火) 12:30:50 ID:???
>>539
どんだけショッポイ機器で開発してるんだ?w

レッツノート CF-W2 で、超低電圧版PentiumM 1.07GHz、 メモリ500MBを使ってるが15秒も掛からんぞ。
10秒未満で立ち上がり、次回起動時は2秒で立ち上がる。

もしかして、クライアントPCにインスタンスを構築してしまって、メモリが足らない状況になってるのか?w
そりゃー遅いわな。


544 :NAME IS NULL:2006/09/05(火) 13:43:47 ID:???
ショボかろうが何だろうが、2000のクエリアナライザは0.1秒で起動するんだよな
管理ツールにクエリアナライザが統合されて、その起動が15秒かかるなら
ユーザにとっては何のメリットもねえ
ショボいのはPCじゃなくてnetテクノロジだろ

545 :NAME IS NULL:2006/09/05(火) 13:48:52 ID:???
>>539
2000のクエリアナライザで2005がそのまま使える。
実行計画など一部に正しく出ないところもあるが実用上ほぼ問題ない。

546 :543:2006/09/05(火) 14:14:33 ID:???
>>544
まぁ確かにその通りだな。


547 :NAME IS NULL:2006/09/07(木) 00:23:21 ID:UkdkV1VI
MSDEいれてSQLの勉強始めたのですが、
日付の指定でつまずいています。

2001/06/27 0:00:00 の dateを抽出しようと思い、
SELECT *
FROM table
WHERE date = 2001 / 06 / 27
などとしてるのですが、何もヒットしません。
2001/06/27 0:00:00の日付のデータはもちろん存在します。




548 :NAME IS NULL:2006/09/07(木) 01:04:35 ID:???
>>547
CONVERTを使うのが推奨確実。
WHERE date = CONVERT(DATETIME, '2001/06/27', 111)
WHERE date = CONVERT(DATETIME, '2001-06-27 00:00:00', 120)
これでも推論で動作するが、環境による。
WHERE date = '2001/06/27'

549 :NAME IS NULL:2006/09/07(木) 12:14:22 ID:???
>>547

WHERE date = '2001/06/27 00:00:00'


550 :547:2006/09/07(木) 17:12:11 ID:???
レスありがとうございます。
CONVERTという関数自体はじめて知りました。

今回のケースでは、CONVERTなしでもいけましたが勉強してみます。
ありがとうございました。

551 :NAME IS NULL:2006/09/07(木) 20:11:45 ID:???
ASPからADOで更新日を更新したいのですが
秒より下の値も更新したく

rs.fields("lastupdatedate").value = "2006/09/07 17:00:01.123"

とやってみたのですがエラーになっていまいます。

rs.fields("lastupdatedate").value = "2006/09/07 17:00:01"

でしたら問題ありません。

秒より下の値を指定して更新する方法はないでしょうか?

よろしくお願いいたします。」


552 :NAME IS NULL:2006/09/07(木) 21:32:10 ID:???
VARIANT経由する時点で秒までしかサポートされないと思う。


553 :NAME IS NULL:2006/09/08(金) 00:48:30 ID:???
なるほど

554 :NAME IS NULL:2006/09/08(金) 21:06:39 ID:???
ロックエスカレーション
--------------------------------------------------------------------------------
 行単位のロックは、同時実行性は高まりますが、大量の行が更新される場合には、
ロックの数が膨大になってしまいます。そこで SQL Server は行単位やページ単位など、
小さい粒度のロックが大量に発生し、SQL Server 自身の負荷が高いと認識したときには、
必要に応じてロックの粒度を拡大(エスカレート)します。
この機能をロックエスカレーションと呼びます。
 例えば、テーブル内に 10000行あり、行ロックが 9000個以上かかっているとします。
このとき、これらの行ロックをテーブルロックへエスカレートすれば、ロックは一つで
済みます。なお、ロックをエスカレートするかどうかは利用できるメモリ量依存するので、
9000個というのはあくまでも例にすぎません。
 ロックエスカレーションが行われるかどうかのしきい値は、locks 環境設定オプションに
よって決まります。設定を確認するには、sp_configure システムストアドプロシージャを
使いますが、デフォルトでは「0」と設定され、動的に監理されています。この場合、
SQL Server の使用しているメモリのうち、ロック用に使用しているメモリ量が 40% を超えた
場合にロックエスカレーションが発生します。

                  翔泳社発行「SQL Server 2000 でいってみよう」より

555 :NAME IS NULL:2006/09/13(水) 17:36:25 ID:???
現在、運用中のSQLServer7のライセンスを
追加したいのですが、どこに売っているのでしょうか?



556 :NAME IS NULL:2006/09/13(水) 21:55:01 ID:???
>>555
もう売ってないよ

557 :NAME IS NULL:2006/09/13(水) 23:36:12 ID:???
>>555
ダウングレード

558 :NAME IS NULL:2006/09/14(木) 01:09:51 ID:???
そういう場合、どうなるんだろうね。


559 :NAME IS NULL:2006/09/14(木) 10:59:52 ID:cmcidpEU
質問はこちらのスレでよいですか?
質問スレ等別にありましたらすみません。

データベース作成時に、トランザクションログファイル
の初期サイズを大きく取ろうとするとエラーが出てしまい
困っております。
初期サイズは50GB、エラー内容は「SQL - DMO ( ODBC SQLState HYT00 )」
となっております。
識者の方、回答お願いいたします。

環境は
OS:Windows2003Server Standard SP1
SQLServer:SQL Server 2000 Enterprise SP4
Enterprise Manager:Management Console 2.0 Version5.2
です。

長文すみません。
よろしくお願いします。

560 :NAME IS NULL:2006/09/14(木) 14:51:44 ID:???
トランザクションログ50Gってどんなシステムよw


561 :NAME IS NULL:2006/09/14(木) 14:59:17 ID:???
CREATE DATABASE コマンドで直接作ってみて作れたらDMOの制限 or バグ。
作れないならSQLServerの制限 or バグ。
このあたりから調べてみたら?

562 :NAME IS NULL:2006/09/14(木) 15:54:12 ID:yVwkjTA+
>>559
まず、トランザクションログを50GBに設計しようとした動機を述べよ


563 :NAME IS NULL:2006/09/14(木) 17:40:40 ID:???
SQLServer上でMySQL(Linux)をODBCでリンクサーバー指定して、
ストアドから制御しようとしてるんだけど、これって可能?

564 :NAME IS NULL:2006/09/14(木) 20:47:32 ID:???
>>559
タイムアウトエラーなので、単に時間がかかっているだけでは?
それにしても50GB(以下ry

565 :NAME IS NULL:2006/09/15(金) 09:15:38 ID:???
>>563
出来ると思うよ。
おれはCSVだけどODBC経由でやっているもん

566 :NAME IS NULL:2006/09/22(金) 00:27:12 ID:f/msGIHj
Oracle使っていたのですが、
来月からSQLServerの管理を任されてしまいました。
Oracleとの対比で説明してくれるような書籍とかありますでしょうか?

567 :NAME IS NULL:2006/09/22(金) 06:31:34 ID:???
>>566
山ほどあるよ。書籍もトレーニングも。

Microsoft や PASSJ も当然のようにやってる。
とりあえず「Oracle ユーザのための SQL Server」でググってみ。
こんな長いキーワードでもいろんなもんがヒットするから。

568 :NAME IS NULL:2006/09/22(金) 13:02:29 ID:???
MSとしてもOracleから是非SQLServerに移ってほしいわけだしな。
地方都市の少し大きい本屋レベルでも普通に書籍は転がってる。

569 :NAME IS NULL:2006/09/22(金) 14:07:03 ID:LVmMnrWG
VS2005StdとSQLServer2005Devの組合せで
レポート作成機能を使った開発ってできますか?



570 :NAME IS NULL:2006/09/22(金) 14:27:20 ID:???
Oracleのsequenceに相当する機能は、SQLserverには無いんですか?

571 :NAME IS NULL:2006/09/22(金) 15:18:13 ID:???
ないどす

572 :NAME IS NULL:2006/09/22(金) 15:42:02 ID:???
そですか。困ったね。ああ面倒だ。どうしよう

573 :NAME IS NULL:2006/09/22(金) 16:44:06 ID:???
項目にIdentity属性を指定すればいいという訳じゃないのか?

574 :NAME IS NULL:2006/09/22(金) 16:58:39 ID:???
>>573
OracleのsequenceはINSERTする前に値を取得できるんだけど、
SQL ServerのIdentity属性ではINSERT後でないと値を取得できない。
困る(´;ω;`)ウッ…

575 :NAME IS NULL:2006/09/22(金) 19:45:21 ID:???
Insertしてから取得してロールバックしちゃうとか

576 :NAME IS NULL:2006/09/22(金) 20:42:11 ID:???
>574
Identityを管理しているテーブルはあるよ。
Identityのインクリメントの法則がわかってたら次の値は予想できるでそ?
それでダメか?

577 :NAME IS NULL:2006/09/22(金) 21:35:10 ID:???
>>576
そのテーブル名を教えてくだされ

578 :NAME IS NULL:2006/09/22(金) 22:18:02 ID:???
SQLServerに慣れるためにも、BooksOnlineでIDENTITYで検索しなされ。

579 :NAME IS NULL:2006/09/23(土) 15:43:22 ID:???
そのようにしまふ

580 :NAME IS NULL:2006/09/24(日) 19:53:07 ID:???
サーバに作成したストアドや関数の中身を取得したいのですが、どうしたらいいですか?

たとえば
ttp://www.vector.co.jp/soft/winnt/business/se331122.html
が、どこから中身を取得してるのか知りたいです。

581 :NAME IS NULL:2006/09/24(日) 20:26:46 ID:???
>580
sp_helptext か、
改行されてない方がいいなら
直接 dbo.syscomments かなぁ?

582 :NAME IS NULL:2006/09/24(日) 20:38:12 ID:???
>580
EnterpriseManager開いて、プロファイラを開いて、
ストアドを撰んで中身を見てみて、
もっかいプロファイラを見てみそ。
そこに答えがある。

これいろいろ応用できるから、覚えとくとよか。

583 :590:2006/09/24(日) 22:40:07 ID:???
>581
dboのストアドは見れないみたいです。
あと、sp_helptextだと、ストアド名が必要ですが、
その一覧を取得する方法も知りたいです。

>582
EnterpriseManagerってサーバーについてるんですか?
サーバーは触れないのです。。。間違ってたらスマソ。
手元にツールは、SQL Server Management Studio Expressだけあります。

584 :580:2006/09/24(日) 22:40:59 ID:???
名前間違えた。。。orz

585 :NAME IS NULL:2006/09/24(日) 23:19:53 ID:???
2000だとおもったら2005だったのね。
EnterpriseManagerってのは2000の管理用アプリケーションのこと。
今回は2005なんだから、その単語は無視してくれ。

で、2005だよな、SQL Server Management起動汁。
それでストアドの一覧とかストアドのソースが見れないか確かめてくれ。
なんか、dboのストアドが見れないっつってるとこからすると、
少なくともdboユーザ権限はないみたいに見えるのだけど、
今、自分のユーザはdboユーザ所有のプロシージャの実行すらできない状態なのか?

…すまん。寝るので、後頼むわ。orz

586 :NAME IS NULL:2006/09/25(月) 15:31:20 ID:yGqzy2kq
EXPRESS板には、プロファイラが付属してないのか・・・・

単純にプロファイラで情報を抽出してみた。
だから余計な構文も入ってるだろうが、そこは工夫してくれ。

ストアド一覧を取得するSQL文は以下ね。
=============================================================================
SELECT
sp.name AS [Name],
'Server[@Name=' + quotename(CAST(serverproperty(N'Servername') AS sysname),'''') + ']' + '/Database[@Name=' +
quotename(db_name(),'''') + ']' + '/StoredProcedure[@Name=' + quotename(sp.name,'''') + ' and @Schema=' +
quotename(SCHEMA_NAME(sp.schema_id),'''') + ']' AS [Urn],
SCHEMA_NAME(sp.schema_id) AS [Schema],
CAST(CASE WHEN ISNULL(smsp.definition, ssmsp.definition) IS NULL THEN 1 ELSE 0 END AS bit) AS [IsEncrypted],
CASE WHEN sp.type = N'P' THEN 1 WHEN sp.type = N'PC' THEN 2 ELSE 1 END AS [ImplementationType],
sp.create_date AS [CreateDate]
FROM
sys.all_objects AS sp
LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id
LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id
WHERE
(sp.type = N'P' OR sp.type = N'RF' OR sp.type='PC')and(CAST(
case
when sp.is_ms_shipped = 1 then 1
when (
select
major_id
from
sys.extended_properties
where
major_id = sp.object_id and
minor_id = 0 and
class = 1 and
name = N'microsoft_database_tools_support')
is not null then 1
else 0
end
AS bit)=0)
ORDER BY
[Schema] ASC,[Name] ASC
=============================================================================



587 :586:2006/09/25(月) 15:31:55 ID:???
んで、ストアドの定義文を取得するSQL文は以下ね。
==============================================================================
SELECT
NULL AS [Text],
ISNULL(smsp.definition, ssmsp.definition) AS [Definition]
FROM
sys.all_objects AS sp
LEFT OUTER JOIN sys.sql_modules AS smsp ON smsp.object_id = sp.object_id
LEFT OUTER JOIN sys.system_sql_modules AS ssmsp ON ssmsp.object_id = sp.object_id
WHERE
(sp.type = N'P' OR sp.type = N'RF' OR sp.type='PC')and(sp.name=N'【ストアド名】' and SCHEMA_NAME(sp.schema_id)=N'dbo')
==============================================================================


588 :580:2006/09/26(火) 23:39:15 ID:???
ありがとうございます。586さんの方法でできました。

589 :NAME IS NULL:2006/09/29(金) 09:03:56 ID:???
Transact-SQLのストアドプロシージャにおいて、
特定のテキストファイルに書き出すことはできますか?
C言語でのfprintfに相当することをしたいのですが。

590 :NAME IS NULL:2006/09/29(金) 19:10:46 ID:???
質問なのですが

リモートからローカルにバックアップ
ローカルからリモートにリストア

する方法はありますでしょうか?ありましたら方法を教えていただけないでしょうか?

591 :NAME IS NULL:2006/09/29(金) 19:49:05 ID:???
BackupExecなりArcServeなり使えば簡単じゃね?


592 :NAME IS NULL:2006/09/29(金) 23:57:07 ID:???
>589
xp_cmdshell+bcp

593 :NAME IS NULL:2006/09/30(土) 04:18:20 ID:???
>>592
どうもです。
SQL serverには、OracleのUTIL_FILEとかDBMS_OUTPUT相当機能が無いのですね。
細かいことしたければSQLCLR使えってことかな。

594 :NAME IS NULL:2006/09/30(土) 06:40:43 ID:???
>>591
レンタルWebサーバーのおまけDB鯖なので、そういうのはちょっと・・・

595 :NAME IS NULL:2006/09/30(土) 10:04:15 ID:???
じゃあ、論理バックアップしかないな。


596 :NAME IS NULL:2006/09/30(土) 19:49:17 ID:ki1xa2S/
Aテーブルの全レコードのある列をBテーブルの情報から作成した内容で更新したく思います。
それで作業用にストアドプロシージャを作ることにしました。
処理的にはAテーブルをカーソルで開いて
WHILE @@FETCH_STATUS = 0
を条件としてループしながら次々とレコードを読み込みながら
Bテーブル用のカーソルを開いてまたWHILE @@FETCH_STATUS = 0を
利用して更新値を作成します。
ここで困りましたのが@@FETCH_STATUSってネストできないようなので困っています。
ふたつのカーソルを同時に開きながらそれぞれループさせて処理させたいのですが。。
こういう場合ってどうすればよいのでしょうか?


597 :NAME IS NULL:2006/09/30(土) 20:29:40 ID:???
RDBで普通はそういうコボリーな処理は*絶対*やらない。

やりたい処理の詳細は知らんけど、
(Aのキー、Aの更新後の値)という一時テーブルを作って
Bで一行ずつ読みながらそのテーブルに変換後の値をInsertしていく。
最後にそのテーブルを参照して一気にUpdate…とか。
せめてそんな感じがいいんじゃないのかな。

598 :NAME IS NULL:2006/09/30(土) 20:33:39 ID:???
>>596
別の変数に退避したら?
SET @T1_STATUS  = @@FETCH_STATUS

599 :596:2006/09/30(土) 21:14:07 ID:ki1xa2S/
>>597
それもそうですね。
今後のデータについてはトリガで作成するので既存のデータに対して
更新したかったのでこの方法を思いつきましたが更新用テーブルを作成することにします。

>>598
なるほど。
@@FETCH_STATUSに対して直接値を見に行かないといかないと思いこんでいました。
今後はInteger型の変数にでも一時待避させておきます。
ありがとうございます。


600 :NAME IS NULL:2006/10/01(日) 11:44:08 ID:???
>593
なくはない。外部ストアドプロシージャを使えばいいだけ。
要はActiveXお呼び出し。

でも、メンドウだよ。
あれこれ加工しまくってすでにテーブル形式維持していないならまだしも、
テーブル形式から出力できる形ならSQL一発で出力できるbcp使うほうが何ぼもラク。
加工が必要であれば、ワークテーブルとしてグローバル一時テーブル使えばいいだけのこと。

601 :NAME IS NULL:2006/10/06(金) 00:03:54 ID:???
SQLServer2005のSQL AGENTを使ったジョブのスケジュール実行についてなのですが、実行すると
「プロセスは作成されませんでした (理由: アクセスが拒否されました。). ステップは失敗しました。」
というエラーが起こります。

CmdExecのジョブなのですが、所有者はDB管理者で実行アカウントのSQL AGENT Service Accountには対象DBへのアクセス許可を与えてあります。
そして、作成したプログラムをプロンプトから実行すれば処理は正常に完了します。

セキュリティ周りの設定だと思うのですが手詰まっています。。。

どなたかアドバイスいただけないでしょうか。よろしくお願いいたします。

602 :NAME IS NULL:2006/10/06(金) 00:19:49 ID:???
その実行ファイルに、SQL AGENT Service Accountがそれを実行できる権限が無いとダメじゃないのかな。

603 :601:2006/10/06(金) 00:28:45 ID:???
>>602
あ゙っ…
それです、きっとorz

ありがとうございます。早速試してまます。

604 :NAME IS NULL:2006/10/06(金) 22:48:27 ID:???
>>303 >>304>>574 のような、シーケンス値に関して質問です。

私は現在、DBを抽象化するレイヤを作っておりまして、現在SQL-Serverを実装しています。

BooksOnlineのIDENTITYに関しての部分も読みましたが、
記載されている「セッション」や「スコープ」という用語の意味をある程度理解(予測)できるものの、確信に至ることができません。
簡単に言ってしまえば、@@IDENTITY・IDENT_CURRENT・SCOPE_IDENTITYのどれを使用すればいいのかが分かっていません。

IDENT_CURRENTは他セッションのIDまで拾ってしまうという情報がありましたので、違うような気はします。
SCOPE_IDENTITYは、期待するような動作をするのでしょうか?

期待する動作というのは、「SQL-Serverに接続・INSERT・Last IDを取得」という1連の処理がほぼ同時にいくつか実行された時に、
それぞれの処理でINSERTしたそれぞれのLast IDを取得する、ということです。

INSERT〜Last ID取得の間に、他の処理でINSERTがあった場合、Last IDが一つ大きな値で返されることは問題です。
SCOPE_IDENTITYを使用すればこのような問題は起きないのでしょうか?


605 :NAME IS NULL:2006/10/07(土) 00:29:19 ID:???
>604
BOLみてみたけど、SCOPE_IDENTITYの項目を読むと、
君の期待通りの例が最後に載っている様に見えるのだけど、
それは違うの?

606 :604:2006/10/07(土) 01:18:26 ID:???
返答ありがとうございます。

SCOPE_IDENTITYの項では、ノーマルなINSERTステートメントとトリガーによって挿入する例が書かれていますね。
そして、それぞれスコープが違う為に@@IDENTITYとSCOPE_IDENTITYで取得される値が異なることも説明されています。

これは非常によく分かるのですが、クライアント毎(処理毎)のINSERTステートメントは、スコープが異なるのかどうかが説明されていません。
スコープさえ異なればSCOPE_IDENTITYは期待する値を返してくれそうなので、あとはそこだけです。

例えばMysqlのlast_insert_id()では、このような説明をされています。

//-----------------------------------------
生成された最後の ID は、接続ごとにサーバで維持される。
したがって、この関数から個々のクライアントに返される値は、そのクライアントによって生成された最新の AUTO_INCREMENT値である。
この値は、他のクライアントがそれぞれの AUTO_INCREMENT値を生成しても、それによって影響されることはない。
この動作によって、他のクライアントの活動にかかわりなく・・・
//------------------------------------------

もしSQL-Serverで言う「現在のセッション」がこのMysqlでの「接続ごと」または「クライアント」と等しい意味を持つならば、私は安心です。
しかし頭の出来があまり良くない私には、SQL-Serverの「現在のセッション」という正確な定義が分かりません。

もし宜しければ、教えて頂けないでしょうか?

607 :604:2006/10/07(土) 01:25:06 ID:???
自分で書いておきながら、「セッション」と「スコープ」が混ざってしまいました。
これでは読む側も分かりませんね。申し訳ないです。

「セッション」も「スコープ」も、定義が分からないのです。

今分かっていることは、

 INSERTステートメントとトリガーはスコープが異なる
 IDENT_CURRENTは他の処理(クライアント)で挿入されたLast IDまで返されてしまう

の2つだけです。

608 :NAME IS NULL:2006/10/07(土) 08:24:36 ID:???
MySQLはわかんないけど、
セッションは、ざっくり言うと、ある特定ユーザがDBに接続してから切り離すまでの単位のこと。
スレッドが違えばセッションは変わる。


609 :NAME IS NULL:2006/10/07(土) 15:23:02 ID:???
セッション下で直接実行される一連のSQL命令で1つのスコープ。
そこから呼び出されるストアドプロシージャは別スコープ。
INSERTやUPDATEで間接的に呼び出されるトリガは別スコープ。
プロシージャやトリガからさらに呼び出されるプロシージャやトリガも別スコープ。

例えば
create table XXX (id int identity, data int)
create procedure sp_HOGE as insert into XXX (data) values (900)
go
insert into XXX (data) values (999)
exec sp_HOGE
select @identity, scope_identity()
go
この場合、結果は @identity = 2, scope_identity = 1 になる。

610 :NAME IS NULL:2006/10/07(土) 16:16:13 ID:???
>>609
なるほど。

 1. insert
 2. 別なストアド実行(ここでもinsertが発生する)
 3. 1.でinsertした行をupdate

というストアドを作る場合は
3のwhereでscope_identityを使うとウマーイわけだ。
勉強になりますた

611 :604:2006/10/07(土) 23:52:21 ID:???
>>608 >>609

ご説明ありがとうございました。
特に「ある特定ユーザがDBに接続してから切り離すまでの単位」という情報がとても参考になりました。
他ユーザのINSERTステートメントが影響するのかどうかが、とても心配でした。

ストアドプロシージャ・トリガを考慮しないとすれば、
INSERTステートメントを実行した直後にSCOPE_IDENTITY()を実行すれば良さそうですね。

本当にありがとうございました。

612 :NAME IS NULL:2006/10/08(日) 19:02:36 ID:???
別スレッドで質問して、こちらに誘導されました。
以下、質問の内容です。

Windows 2000 に SQL Server 2000 をインストールして使っていました。
OSのホスト名を変更したのですが、SQL Server に昔のホスト名が残ってしまいます。
(レジストリを検索しましたが、ヒットしませんでした。)

SQL Server は、ホスト名をどこで管理しているのでしょうか?
また、変更するにはどうすればよいのでしょうか?

613 :NAME IS NULL:2006/10/08(日) 19:57:45 ID:???
>612
ヒント @@SERVERNAME
Books Onlineで検索すると多分正解までわかる。

614 :NAME IS NULL:2006/10/08(日) 23:00:54 ID:???
>>612
別なヒントは「masterデータベース内」

615 :NAME IS NULL:2006/10/09(月) 00:14:19 ID:???
nvarcharに日本語、中国語、英語、その他いろいろな言語を入れています。
PHPからUTF-8として読み出そうとしているのですが、どうすればよいでしょうか?
普通に接続して読み出すとShift-JISになってしまいます・・・・
SQLに何か書くのでしょうか?

616 :NAME IS NULL:2006/10/09(月) 08:19:21 ID:???
>>615
多分PHPレベルでの問題。「普通に接続して」のあたりに原因が潜んでそうだな。
PHPスレで聞いたほうがいい。

617 :612:2006/10/10(火) 11:44:44 ID:???
>> 613
SQL Server Books Online の中に「サーバーの名前の変更」という項目がありました。
こちらを元に作業してみます。

618 :NAME IS NULL:2006/10/11(水) 14:29:16 ID:???
SQL 2005でSQL 2000のSQL Enterprise Managerにあたるものはどれでしょうか?

619 :NAME IS NULL:2006/10/11(水) 20:40:15 ID:???
SQLServer Management Studio


620 :NAME IS NULL:2006/10/11(水) 21:06:01 ID:???
ありがとうございます

621 :NAME IS NULL:2006/10/13(金) 19:50:43 ID:BKv/4VYy
DB超初心者です。SQL-serverでローカル接続はできるんですが、
ファーストサーバに接続する方法がわかりません。
SQL-server ManagementStudioExpressで
サーバ名「oldclock####」
SQL-server認証
ユーザ名「L_########」
パスワード「#######」
「・・・リモート接続許可しないようになっていることがエラーの原因である可能性・・」
こういうエラーが出ます。やり方そのものが間違っているのでしょうか?
ファイヤーwall消しても同じです。
ちなみにSQLEXPRESSはTCP/IP のみを使用するになってます。


622 :NAME IS NULL:2006/10/13(金) 20:39:59 ID:???
ファーストサーバってなんだろう。
それ自体わからない超初心者です。

対象の接続したいSQL Serverですが、本当にSQL認証モードなのでしょうか?
認証方法がWindows認証かWindows+SQL認証のどちらかしか選択できないので、
とりあえずドメインユーザで接続を試してみてみたらどうかな。


あと、自分も質問を。
復旧モデルがフルの際に、トランザクションログには今まで実行した命令が
全て書かれていると思うのですが、実行を行ったSQL文自体を参照することが
できるのでしょうか?

DBCC Logだと、トランザクション掛ける際に付けたマークは出てくるのですが、
その際に実行したSQL文を後追いできるのかなと・・・・・・。

勝手にデータ消されて、いつ誰がやったのか調べたいのです。

ご存知でしたら、ご教授いただければ。
よろしくお願いします。

623 :NAME IS NULL:2006/10/13(金) 22:14:18 ID:???
>>621

これも試してみるんだ
ttp://www.microsoft.com.nsatc.net/japan/sql/ssj/tips/01.mspx

624 :NAME IS NULL:2006/10/13(金) 22:36:34 ID:???
ちょっとExpress Editionを落として遊んでみたけど
サーヴァーの設定が結構難しかったよママン


625 :NAME IS NULL:2006/10/13(金) 22:44:45 ID:???
SQLServer2005におけるパフォーマンスについての質問なんですが、
何十億単位のレコードがはいっているテーブルにおいて、indexの張られている
列の検索に要する時間というのはどれぐらいかかるのでしょうか。

自宅のP4マシンで試そうとおもったのですが、億単位のデータを用意することが
できなかったので、ご存知でしたら教えてください。

また、Indexの再構築にかかる時間も、もしご存知でしたら教えていただけないでしょうか

626 :NAME IS NULL:2006/10/13(金) 23:56:33 ID:???
>>625
まともに計算する気がサラサラないが、参考にどうぞ。

数十億レコードといって思いつくのが、金融系の履歴情報ぐらいしか思いつかないのだが、
仮に100億のレコードとして、1レコードあたり200Byteとする。
100億*100Byte=1000GB=2TBとなる。

この時点でまずRAID必須かつ、1パーティションサイズの最大となる。
ということは、1ファイルグループでは扱えない=テーブル作れない。

ここまでがSQLServer2000のお話。


2005になって、「データパーティショニング」という機能が追加された。
簡単に説明すると、テーブル単位でもファイルグループを分散させて
置くことが出来る機能。

で、それを含めると各ファイルをドライブごとに分けたりすることができて、
Disk I/Oを減らすことが可能。

他にもクラスタ機能などDB上で高速化も図れる。

RAID構成や、載せてるメモリ、CPU数で変わってくる。
提示された条件だけじゃ時間なんてわからん。

あとあんまりメモリやHDD容量が足りないと、最悪帰ってこない。


変なこと書いてないよね、ね?

627 :NAME IS NULL:2006/10/14(土) 00:26:41 ID:???
>>626
漠然とした質問だったにもかかわらず丁寧なレスありがとうございます。

データパーティショニングは調べているうちに知って凄い機能だと感動しましたが、
この機能はEnterpriseEdition以上(というかEE)のみのサポートですよね。
使えるのはStandardEditionなので、この機能には期待できません。。。

たとえばMixiとかの「足あと」機能を実装する際に、一人当たり1000件保存していたと
しても、結構なレコード数になりますよね。(現時点で600万ユーザらしいですし)
いま想定しているのは、テーブルをユーザIDごとに分けて(1〜10000ユーザまではテーブルAのように)
テーブルサイズを小さくして行えばいいのかと思っているのですが、しなかった場合ってどれぐらいの
時間がかかるのか知りたかったんです。

※OpenPNEでは1テーブルに全部ログを残していくみたいですが、これだと肥満化してしまう気がします。
この辺の設計って、どこで勉強できるんでしょうか?

628 :626:2006/10/14(土) 01:46:46 ID:???
mixiはやってるから、「足あと」機能については何となくSQL Serverで
実装した際の説明はできる。

ちなみに実際にテーブル構造調べたりしたわけじゃないから、↓に書くことが
本当にそういった構成かは責任もてない妄想の産物。
あと本も出てるみたいだけど、手に取ったこともない。


「足あと」機能の表示は最大30件ということで、どんなに増えたとしても
会員数*30件、600万人でも2億行かない程度。
プラスして、各会員管理してるテーブルにでも訪問数フィールドを
用意すればおけ。

もしくは、会員レコードには足跡用に60個分フィールドが用意されていて、訪問者+時間を
そのまま入れてるのかもしれない(←こういった考えも出来るというだけですよ)


うちがmixiで気になってるのは友だち登録。
自分の名前横に()で友人の数が出てくるけども、その数が他人のページから見た際と
異なってる場合がある。

例として。
ABCの3人いたとして、A-B、B-Cが友だちとして、Aのページ・Cのページから見た際に
Bの友人数が異なっている時がある。

要は更新にタイムラグが発生しているということ。
そのくせ、「マイミクシィ最新日記」に出てくるのはタイムラグを感じたことはなかったり。

普通に考えて、DBサーバ複数あって同期取るのに時間が掛かってるだけなのかも知れないけど。

そう考えると、友人が目の前でログインしていたとしても、最終ログイン時間が5分以内というのも
納得できるのかなと。
(例え秒刻み表示出来たとしても5分以内と表示させるといったポリシーなのかも知れない・・・・・)


OpenPNEはごめん、まったく知らない。
軽く調べてみたけど、テーブル構造がExcelで転がってるみたいだから何となくはわかるんじゃない?

629 :NAME IS NULL:2006/10/14(土) 01:51:55 ID:???
>>625
大量のレコードを用意するだけなら同じテーブルのレコードを無条件に結合したのを元にテーブルを作ればいいんじゃない?
数千万〜億くらいでもindexを使ってればレコード数に依存して遅くなるってことはないよ。それ以上でかいのは試したことないけど。

630 :超初心者:2006/10/14(土) 02:05:47 ID:OCcBm/5X
>>622
ファーストサーバはレンタルサーバです
今なら3ヶ月の無償登録ができますここttp://www.fsdotnet.jp/express/order.html
>>とりあえずドメインユーザで接続を試してみてみたらどうかな。
すみません意味がよくわかりません;;
>>623
すでに試してましたが再度よく読んでやってみたけど無理でした。
ちなみにレンタルサーバにあるSQLはSTANDARDみたいです。

631 :NAME IS NULL:2006/10/14(土) 02:48:22 ID:???
>>628
本当、丁寧なレスありがとうございます。

「足あと」機能を例として話を続けさせていただきますが、
 [log_id] [int] index //ログID
 [member_id] [int] index //ログを記録している会員のID
 [access_id] [int] //訪問者のID
 [access_datetime] [datetime] //アクセス日時
というテーブルがあったとして、1会員最大30件だとした場合、
select count(*) from ログテーブル where member_id = 会員ID
のCountが30件になるまでは普通にInsertしますが、31件目になった
場合は、一番古いログをDeleteして、新しいのをInsertしますよね。

これを何度も繰り返しているとIndexが断片化してしまいパフォーマンスが
落ちると思うのですが。
2億行のテーブルに対してIndex再構築は時間がかかりそうですし、
Index Fill Factorに余裕をもたせておいても、アクセスが多い(更新が頻繁な)
場合はあまり意味がない気がします。

Index再構築を考えるとテーブル分割しか対応方法はないのでしょうか。

>>629
ループで1行ずつ足す方法をやっていました・・・これだと異常に時間がかかってしまい
断念していましたが、教えていただいた方法で試してみます。

最適化?されたIndexなら良いのですが、更新が頻繁にある場合のIndex断片化および
再構築が気になって仕方ありません・・・。
ミッションクリティカルでないシステムの場合は夜間バッチで再構築もありだとおもうのですが
大規模システムでダウンタイムゼロのシステムの場合は、DBをミラーリングのようにしておいて
片方を落としてIndex再構築みたいなことをやっているのでしょうか。

大規模DBの場合、この辺をどう対応しているのかが気になりました。

632 :NAME IS NULL:2006/10/14(土) 09:00:23 ID:???
>>631
履歴が30件限定なら、訪問者のIDをキーに含まないようにして代わりに1−30の番号を使用する。
場合によっては第一正規形を崩して1−30のデータを1レコードで持ってもよい。
これによってキーが書き換わる可能性が極めて低くなる。
足跡の更新にはメッセージキューを使うと幸せになれる気がする。

633 :NAME IS NULL:2006/10/14(土) 09:02:40 ID:???
>>630
レンサバ固有の制限ならそこの業者に聞くしかないような。

634 :622=623:2006/10/14(土) 09:06:39 ID:???
>>630
インターネット上のサーバでやれないと思う。VPNとかLAN内だとかの話なら別だろうけど。
少なからず、自分はやったことない。

HP見に行ったけど、せっかく管理ツール用意してくれてるんだから、
こっち使おうよ。
ttp://jp.mylittleadmin.com/jp/welcome.aspx

635 :626:2006/10/14(土) 10:15:38 ID:???
>>632
たぶん、足あと機能の履歴30件での運用という意味ではなく、631は大量のレコードを
扱っているテーブルの管理が聞きたいだけなのかもしれない。

例題が300件だったら、1レコードに収まらないということで考えたほうがいいと思う。


>>631
まずそのテーブル構造だと主キーが[log_id][member_id]の複合のような気がするんだけど、
どうなのかな。

普通に考えて、[member_id]がユニークなのだからIndexは会員Noだけでよい気もする。
[member_id]をSelectして、[log_id]orアクセス時間でソート。


で、再構築に関しては2005からはオンラインで再構築できるようになったから、
バックグラウンドでやろうと思えばやれるはず。

場合によっては処理が引きずられて終わらなくなって、バックアップもまともに
出来なくなるだろうから、お勧めはしない。
少なからずウチはしていない。(データが少ないというのもあるけど)


ただ、632が言ってるように再構築しなくても良いようなテーブル構造するのがベスト。


あと、DBミラーリングに夢を持ってるみたいなのでついでに。
フェールオーバークラスタリング機能使ってもダウンタイムは発生するよ。
2000Ent使って、サーバ2台、HDD1台構成で運用してた経験があったけど切り替わりに1分近く掛かった。
要はサービスの再起動やってるから。2005は知らない。改良されたのかな。

サーバ老朽化のH/W切り替えのついでに2000→2005をやったんだけど、構築・管理・運用・復旧が大変なこと、
SLA定義してクリティカル度の再確認を理由にしてクラスタは止めた。

ちなみにサーバ管理者だけど、開発者ではないから構造云々は話半分でお願い。

636 :NAME IS NULL:2006/10/19(木) 00:34:14 ID:???
もう解約したけど、ファースト鯖はやめとけ。
お試しでもやめとけ。

637 :NAME IS NULL:2006/10/19(木) 03:03:16 ID:???
理由を3行でどうぞ

638 :NAME IS NULL:2006/10/21(土) 15:01:41 ID:???
警告: NULL 値は集計またはその他の SET 演算で削除されました

NULLで集計してるのはわかってるんで
このメッセージーを出さないようにするにはどうしたらいいですかね。


639 :NAME IS NULL:2006/10/21(土) 17:16:21 ID:???
>>626
100億 * 100Byte = 1000GB = 2TB?

1000GBがなんで2TBなんだ

640 :NAME IS NULL:2006/10/21(土) 22:52:42 ID:???
626じゃないが1レコード200バイトと言っているか2TBではあるだろう。
実際はINDEXつけるだろうから2TBでも収まらんと思うが。

641 :NAME IS NULL:2006/10/22(日) 01:38:46 ID:???
適当計算とか言ってるからどうでもいいじゃん
実際細かい計算なんてできるもんなのかも知らないが

ところで、誰かLog Explorer for SQL Serverって使ったことある?
使い勝手ってどんなもんなのかな

642 :NAME IS NULL:2006/10/23(月) 13:11:28 ID:pRTVOkHD
ARCServe+agent for mssqlでオンラインバックアップ取ってる人いたら教えて下さい。

週イチでフルバックアップ、
日次で差分取って復旧出来ますか?
トランザクションログは無視でいいのかなぁと疑問に思いましたので

643 :NAME IS NULL:2006/10/24(火) 00:33:59 ID:???
しかし情報源が少ないよね〜
ぐぐってもMSのサイト以外なかなか見つからない・・。

644 :NAME IS NULL:2006/10/25(水) 00:46:10 ID:2cjIU9XR
IntegraionSrvices(SSIS)について詳しい方教えてください。
これからSSISでファイルtoDBのバッチ処理を開発します。
データフロータスクのフラットファイル接続マネージャで、入力ファイル名を
変数から指定する方法はありますか?
開発環境と運用環境のパスが違う可能性があるので困っています。


645 :NAME IS NULL:2006/10/25(水) 07:29:25 ID:???
トランザクションログはいるだろ。

646 :NAME IS NULL:2006/10/25(水) 12:52:47 ID:UZdZ/gmr
644です

agent for mssqlはトランザクションログをバックアップしません。と書いてあったので…
DBと別にos側(ファイルべース)でバックアップ取れって事ですかね…

647 :NAME IS NULL:2006/10/25(水) 16:00:21 ID:djRfJ7iX
VB.NETでSQL SERVERにアクセスするWebアプリを開発中です。DBから取得した情報をDatagridに表示するという
処理なのですが、処理を実行したところ以下のエラーが発生しました。

'/WebApplication1' アプリケーションでサーバー エラーが発生しました。
--------------------------------------------------------------------------------

オブジェクト名 'Products' は無効です。
説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.Data.SqlClient.SqlException: オブジェクト名 'Products' は無効です。

ソース エラー:


行 30: Dim cmd As New SqlCommand("SELECT * FROM Products", cn)
行 31:
行 32: Dim dr As SqlDataReader = cmd.ExecuteReader
行 33: DataGrid1.DataSource = dr
行 34: DataGrid1.DataBind()


ソース ファイル : c:\inetpub\wwwroot\WebApplication1\WebForm1.aspx.vb 行 : 32

スタック トレース:


[SqlException: オブジェクト名 'Products' は無効です。]
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
System.Data.SqlClient.SqlCommand.ExecuteReader()
WebApplication1.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\WebApplication1\WebForm1.aspx.vb:32
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()

どうすればこのエラーを解消できるでしょうか? ちなみにOSはXP PROです。


648 :NAME IS NULL:2006/10/25(水) 16:08:45 ID:???
>>647
Productsテーブルが見つからんというエラーだな。
使用しているデータベースが違うか、スキーマが違うかのどっちか。
テーブルを作ったときのユーザーと接続時のユーザーが違って無いかチェック。

649 :NAME IS NULL:2006/10/25(水) 16:10:39 ID:???
接続先のDBをNorthWindにしていないからだそ。


650 :NAME IS NULL:2006/10/26(木) 16:59:14 ID:KETWZyDn
2000なんですけど、DTSの設定情報をコマンド一発でテキストに落とす方法はありますか?
ぐぐったら名前を付けて保存→VBソースに落とす
ってな方法はあるみたいなんですが、
コレが限界なんですかね?

出来ればVBソースみたいなわかりにくいもんじゃなくて
XML形式に落とせれば最高なんですが
(スクリプトで調査・編集しやすいので)

651 :NAME IS NULL:2006/10/30(月) 19:10:31 ID:???
SQLServer2005 です。

Transact-SQLから、外部に置いたSQLスクリプトファイルを実行するには、どうしたら良いでしょうか?


652 :NAME IS NULL:2006/10/31(火) 21:28:59 ID:???
>651
セッション別でよければxp_cmdshellでisql経由で。
同じセッションがよければファイルを読み込んで、文字列につっこんで動的SQL。

653 :NAME IS NULL:2006/11/03(金) 11:17:13 ID:eXw2/gh2
毎月Windowsのセキュリティパッチが公開されているが
DBサーバには何を適用すればよいっすか?
皆さんのサーバはとりあえず全部適用してるのでしょうか?

654 :NAME IS NULL:2006/11/03(金) 12:04:39 ID:???
そんなもの適用しねぇ
検証しねぇといけないじゃん。

655 :NAME IS NULL:2006/11/03(金) 13:07:00 ID:???
654に同意

普通はセキュリティパッチの内容を確認して関係あるかないかを判断する
社内にあるサーバならほとんど放置、外からアクセスがあるようなところなら検証が必要

656 :NAME IS NULL:2006/11/04(土) 02:48:29 ID:???
SP4がらみのトラブル報告が無さ過ぎる。怖くて適用できない。
てか入れないのかなやっぱ。みなさんの仕事では入れてる?

657 :NAME IS NULL:2006/11/04(土) 03:08:33 ID:???
>>656
入れてますよ。最大メモリの件があったらしいけどそれのパッチも出てるから大丈夫でしょう。

658 :NAME IS NULL:2006/11/04(土) 03:44:24 ID:???
統計の自動更新を入れていると時々全く応答を返さないクエリが発生するんだけど不具合か何かでしょうか?
CPU使用率はCPU1個分が100%食ってる状態でタイムアウトをなしにして一晩放置しても結果が帰ってこなかった。
一度そういう状態になっても1〜2時間くらいで正常に応答を返すようになる。
毎回同じクエリが引っかかるわけでもなくテーブル3つくらいをサブクエリで使うクエリはどれでも起きることがある感じ。
統計の自動更新を外すと正常に応答を返すようになるので統計の自動更新でおかしなことになってるのかな?
SQLServer2000SP4でWindows2003です。

659 :NAME IS NULL:2006/11/04(土) 15:23:25 ID:???
>>652
遅くなりました。
ありがとうございました。


660 :660:2006/11/11(土) 11:13:07 ID:???
質問です。
かなり長くなる予定なので、見苦しくなる可能性があります。
申し訳ない。

WEBシステム
開発言語:Java
アプリサーバ:Interstage Application Server
DB:SQL Server 2000
用途:複数店舗(50店舗ほど)からのデータ照会・登録・更新・削除

上記環境でWEBシステムで、
ある日から商品詳細画面の表示が非常に遅くなった。
SQLプロファイラでのトレース結果から、問題となるクエリを抽出した結果、
Reads件数が、通常の20倍以上であった。(1,000〜2,000 → 40,000)

(以下、該当クエリ@見づらくてすみません)
※ 本日='20061108'

(01) SELECT (各種マスタ・データから100項目程度)
(02) FROM 商品マスタ 商品
(03) ----------
(04) LEFT JOIN 端末マスタ 端末 ON IPアドレス='(接続端末のIP)'/* IPより店舗を取得する為 */
(05) LEFT JOIN (その他マスタ10種類程度)
(06)  :
(07) ----------
(08) LEFT JOIN (SELECT 商品コード, SUM(発注数) AS 発注数 FROM 発注データ WHERE 日付='20061107' AND 店舗コード='0000' GROUP BY 商品コード) 発注1 ON 発注1.商品コード = 商品.商品コード
(09) LEFT JOIN (SELECT 商品コード, SUM(発注数) AS 発注数 FROM 発注データ WHERE 日付='20061108' AND 店舗コード='0000' GROUP BY 商品コード) 発注2 ON 発注2.商品コード = 商品.商品コード
(10) LEFT JOIN (SELECT 商品コード, SUM(発注数) AS 発注数 FROM 発注データ WHERE 日付='20061109' AND 店舗コード='0000' GROUP BY 商品コード) 発注3 ON 発注3.商品コード = 商品.商品コード
(11) LEFT JOIN 実績データ 実績1 ON 実績1.日付='20061101' AND 実績1.店舗コード=端末.店舗コード AND 実績1.商品コード=商品.商品コード
(12) LEFT JOIN 実績データ 実績2 ON 実績2.日付='20061102' AND 実績2.店舗コード=端末.店舗コード AND 実績2.商品コード=商品.商品コード
(13) LEFT JOIN 実績データ 実績3 ON 実績3.日付='20061103' AND 実績3.店舗コード=端末.店舗コード AND 実績3.商品コード=商品.商品コード
(14) LEFT JOIN 実績データ 実績4 ON 実績4.日付='20061104' AND 実績4.店舗コード=端末.店舗コード AND 実績4.商品コード=商品.商品コード
(15) LEFT JOIN 実績データ 実績5 ON 実績5.日付='20061105' AND 実績5.店舗コード=端末.店舗コード AND 実績5.商品コード=商品.商品コード
(16) LEFT JOIN 実績データ 実績6 ON 実績6.日付='20061106' AND 実績6.店舗コード=端末.店舗コード AND 実績6.商品コード=商品.商品コード
(17) LEFT JOIN 実績データ 実績7 ON 実績7.日付='20061107' AND 実績7.店舗コード=端末.店舗コード AND 実績7.商品コード=商品.商品コード
(18) LEFT JOIN (その他データ数種類)
(19)  :
(20) ----------
(21) WHERE 商品.商品コード IN (SELECT TOP 10 商品W.商品コード FROM 商品マスタ 商品W WHERE (条件略))

661 :660:2006/11/11(土) 11:14:03 ID:???
(前承)

簡単に言えば、ある条件のトップ10商品に関して、
前後1日の発注(予定)、過去7日間の実績(売上、仕入等)を抽出しているだけです。
ちなみにデータ件数ですが
商品マスタ:50,000件くらい?(すみません、覚えてません)
発注データ:40,000(件/日)×3ヶ月=3,600,000件
実績データ:400,000(件/日)×5週間+α(未来が若干)=15,000,000件
※ LEFT JOINでのリンク部分においては、すべてクラスタ化インデックスでのスキャンとなっています。

上記クエリをSQLクエリアナライザで実行し、実行プランを確認した所、
(17)の部分の負荷が、非常に高くなっていました。
※ 参照件数を見る限り該当日付の全レコードを読み込んでいるっぽい
(11)〜(16)と(17)の行を入れ替えたり、
(11)〜(16)と(17)の日付を入れ替えたりして、クエリを実行した場合、
入れ替えた行(つまり日付='20061107'の行)がかならず負荷が高くなります。
(17)の日付='20061108','20061109'等に変更すると、問題なく動作します。
また、(17)の商品.商品コードを固定値('49〜'等)に変更しても、問題なく動作します。

と言うわけで、「実績データ」のインデックスが壊れているような気がしたので、
・インデックスの再創生
・インデックス削除 → 再作成
と行いましたが、結果が変わりませんでした。


また、クエリを最小限にして実行した場合(以下参照)、

(01) SELECT (各種マスタ・データから100項目程度)
(02) FROM 商品マスタ 商品
(03) ----------
(04) LEFT JOIN 端末マスタ 端末 ON IPアドレス='(接続端末のIP)'/* IPより店舗を取得する為 */
(07) ----------
(11) LEFT JOIN 実績データ 実績1 ON 実績1.日付='20061101' AND 実績1.店舗コード=端末.店舗コード AND 実績1.商品コード=商品.商品コード
(12) LEFT JOIN 実績データ 実績2 ON 実績2.日付='20061102' AND 実績2.店舗コード=端末.店舗コード AND 実績2.商品コード=商品.商品コード
(13) LEFT JOIN 実績データ 実績3 ON 実績3.日付='20061103' AND 実績3.店舗コード=端末.店舗コード AND 実績3.商品コード=商品.商品コード
(14) LEFT JOIN 実績データ 実績4 ON 実績4.日付='20061104' AND 実績4.店舗コード=端末.店舗コード AND 実績4.商品コード=商品.商品コード
(15) LEFT JOIN 実績データ 実績5 ON 実績5.日付='20061105' AND 実績5.店舗コード=端末.店舗コード AND 実績5.商品コード=商品.商品コード
(16) LEFT JOIN 実績データ 実績6 ON 実績6.日付='20061106' AND 実績6.店舗コード=端末.店舗コード AND 実績6.商品コード=商品.商品コード
(17) LEFT JOIN 実績データ 実績7 ON 実績7.日付='20061107' AND 実績7.店舗コード=端末.店舗コード AND 実績7.商品コード=商品.商品コード
(21) WHERE 商品.商品コード IN (SELECT TOP 10 商品W.商品コード FROM 商品マスタ 商品W WHERE (条件略))

この場合は、問題なく動作したりします。(ワケワカンネ


662 :660:2006/11/11(土) 11:16:18 ID:???
(前承)

更に、「実績データ」に対して
・データ退避 → テーブル削除 → 再作成 → データロード('20061101'以降のみ)
と行ったら、日付='20061107'では良好になりましたが、
今度は、日付='20061108','20061109'等の未来日付で異常(高負荷)になるようになりました………(ワケワカンネ


ちなみに、サーバ機のディスクに障害はないっぽいです。
(イベントビューアや監視ソフト上ではアラートはあがっていません。)

結局、
[1] インデックス領域が論理的 or 物理的に壊れている
[2] 実績データの件数が多すぎ
[3] クエリが長すぎる(テキストにして10KB以上なんですよね…)
[4] クエリの返す結果が大きすぎる
と考えたのですが、さっぱり判らず、
最終的に、妥協案ですが、「実績データ」を再び
・データ退避 → テーブル削除 → 再作成 → データロード('20061101'以降のみ)
と行い、インデックス作成時に非クラスタ化インデックスで作成したら、
試した限りのパターンで、問題なく(非クラスタ化インデックスの為、極小の負荷がかかっていますが)動作しました。


という訳で、とりあえずは暫定的にはなんとかなったのですが、
いつかのタイミングでまた起こり得そうな感じがして、いまいち納得がいかないんです。


長くなりましたが、
原因が判る(または、推論等でも全然かまわないのですが)方、
同じような現象に事があった事がある方がおりましたら、
何か対処/対応法、意見等をいただけたら幸いです。

長文/乱文、本当に失礼しました。
鬱陶しい、見苦しいと思われた方がいましたら、大変申し訳ありませんが、スルーしてください。m(_ _)m

663 :NAME IS NULL:2006/11/11(土) 12:09:31 ID:???
JOINの数が多いと途端にパフォーマンスに影響でるんですよね
だからといってどうする訳にもいかなそうですけど
私の場合JOINの相手が件数の少ないマスターだったから
できるだけJOINを除きプログラム側で対処してしまいました

664 :NAME IS NULL:2006/11/11(土) 17:38:40 ID:???
なんつーか、問題のSQLの特に後半部分が頭悪いと言う印象しかない。

>実績データ 実績1 ON 実績1.日付='20061101'
なんて指定してJOINするDBの設計に欠陥があると思うのだが。
Accessから移植したDBかよ、って感じだ。

ソフトを改良できないんだったら、仕方ないので、
より高速なハードウェアに交換汁。としかいいようがない。

665 :660:2006/11/11(土) 17:43:02 ID:???
>>663
返信、ありがとうございます。
JOINの問題もあるのかなぁ…
確かに一回ですべてを読み込む必要って無いとは思うんだよね。
特に、発注データのサマリの部分は…
(私なら、少なくともそこは外で取得するような設計するんだが…)

コーディングレベルの対応だと面倒なんだよなぁ…
時間的にも………金額的にも……………_| ̄|○

666 :660:2006/11/11(土) 17:50:13 ID:???
>>664
返信、ありがとうございます。

ハード面は、一応検討済み。金の問題な訳で…_| ̄|○
それと、設計レベルの不具合(ちゅーかダメダメさ)は今更勘弁。
つか、私自身が一番思ってる所。

ちなみに、実績データのDB設計って
どんなんだったら良かったんでしょうか。
日付・店舗・商品別に各種実績値を持たせてるだけなんだが。
日付毎に横持ちさせた方がいいん?

667 :664:2006/11/11(土) 19:02:01 ID:???
>>660
実際はもっと複雑なクエリが動いていて、ハード面での
実装とパワーのバランスがあるから一概にいえないが、
joinするにして、それらのJOINを高速にしたかったら
テーブルに固有のIDを割り振るべきかと。

そして「前後1日の発注(予定)、過去7日間の実績(売上、仕入等)を抽出」
のクエリならFROM句は「発注データ」か「実績データ」で商品マスタをJOINじゃねーの?
またDB設計の段階で発注に対する発注番号(発注データ.発注ID)と
実績データ(実績データ.発注ID)としてJOINさせるにしても負荷が
かからないテーブル設計するとか。

でメインのクエリのWHERE句で「実績データ.日付 BETWEEN CURRENT() DATE() - 7 AND CORRENT_DATE()
とスマートに書け。アフォみたいに一週間分の日付リテラル指定しているのはどーかと思うし。


とメインはDB2使いの漏れが言ってみるテスト(w

668 :NAME IS NULL:2006/11/11(土) 19:06:09 ID:???
ああ、タイプミスが。
CURRENT_DATE()関数は当日の日付を返すです。
実際は-7で一週間前にはならんと思うので創意工夫ヨロ

669 :NAME IS NULL:2006/11/12(日) 07:22:03 ID:???
MySQLと間違えた

ややこしい名前つけんなM$氏ね!


670 :NAME IS NULL:2006/11/13(月) 11:08:32 ID:???
>>669
眼科池低脳

671 :NAME IS NULL:2006/11/13(月) 13:18:35 ID:ULPeGeY3
ディスク障害が起こった場合、ログファイル無しで復旧できますか?
復旧方法も教えてください

672 :NAME IS NULL:2006/11/13(月) 23:18:46 ID:???
>671
ディスク障害で全部お釈迦になったの?
バックアップはいつ時点のどういう状態のものがあるの?
ログファイルがないという情報しかないのであれば、
どう復旧させたらいいのかおいらもわからん。

673 :NAME IS NULL:2006/11/15(水) 15:38:03 ID:8Q9DJyEe
SQL Server 2005の入っていたWindows Server 2003をアンインストールして入れなおしたのですが、
SQL Server 2005の再インストール時、
「SQL Server セットアップは、ユーザuser\domainをローカルグループSQLServer2005MSFTEUser$machine$MSSQLSERVER」
と出てインストールできませんでした。

もしかしたらスレ違いかも知れませんが、
対処法などご存知の方がいましたら教えてください

674 :NAME IS NULL:2006/11/15(水) 18:00:05 ID:BzPAr/v3
SQLServerの国際化についてですが、行き詰まってます…
JSP→Servlet→JDBC→SQLServer2000という構成で、
クライアントから入力した韓国語、中国語がSQLServer内で化けてしまいます。
(エクセル2000へのエクスポートで確認)
SQLServerでは、型をnvarcharにしただけです。

JSPはcharsetをUTF-8とし、ファイルをUTF-8で保存しています。
SQLServerとJavaはUCS-2を使用しているため、JDBCの前後では何らかの変換は
不要と予測しています。となると、JSPのリクエストをServletで受け取ったところで
UTF-8とUCS-2への変換、またレスポンスを受け取る際はその逆変換が
必要になるかと思うのですが、そもそもそのような事ができるのでしょうか。
また、そもそも、Java環境でのSQLServerの国際化の方法は上記で合っているのでしょうか。

現状は、Servletで new String(xxx.getByte(8859_1), "UTF-8")としても化けます。
また、何もしなくても化けます。
OSはWindows2000です。韓国語、中国語のフォントは入れております。


675 :NAME IS NULL:2006/11/15(水) 19:09:00 ID:NWg/dc2n
SQLサーバのエージェントでタイマー起動のDBのバックアップファイルから、
DB復元を実行すると、PGからアクセス出来ない現象がおきています。
どうも、復元するときにクリエイトテーブルが走って接頭語(USER OR DB体?)
が付いているみたいで、接頭語を付与するとクエリアナライザから読めます。

DB復元前: drop table XXテーブル
DB復元後: drop table USER.XXテーブル

DB復元時に、接頭語がつかない復元方法の
対処法などご存知の方がいましたら教えてください 。<(_ _)>

676 :NAME IS NULL:2006/11/15(水) 19:20:15 ID:???
>>675
ユーザーとログインの関連付けがうまく行ってないのじゃないの?

677 :NAME IS NULL:2006/11/16(木) 10:44:54 ID:???
>>674
まず、どの時点で文字化けが発生しているのかを確認すること。
登録時に化けていることは確認済み、とのことなので、リクエスト
パラメータをStringオブジェクトに格納するときに化けているのか
ServletからDBに登録するときに化けているのかを確認する。

それから、日本語は化けていないの?

>また、そもそも、Java環境でのSQLServerの国際化の方法は上記で合っているのでしょうか。

MS純正のJDBCドライバであれば、そもそも対象の列定義がなんであれ、
適切な変換を自動的に行う仕様になっているはずです。

>現状は、Servletで new String(xxx.getByte(8859_1), "UTF-8")としても化けます。

この方法はServlet2.2以前の手法。
request.setCharacterEncoding("UTF-8");
を実行すること。

678 :NAME IS NULL:2006/11/16(木) 14:36:10 ID:DKWl/GHI
調査を続けた結果、以下一通りうまくいきました。
JSP→Servlet→JDBC登録→SQLServer→JDBC検索→Servlet→JSP

結論から言うと、SQL文中のUnicode型の値に対し、
Nプレフィックスがなかったのが原因です。
nchar,nvarcharといい、SQLServerの独自仕様なんですね…困ります。
もっと汎用的な方法はないものかと。。。

リクエスト部分についても、自前でUTF-8でファイルに出力して
試しましたが、問題ありませんでした。(log4jがエンコーディングを指定できないため)
また、new String(xxx.getByte(8859_1), "UTF-8")でも
request.setCharacterEncoding("UTF-8"); でも同じ結果でした。

回答をくれた方ありがとうです。

679 :NAME IS NULL:2006/11/16(木) 14:59:00 ID:FKuri+ao
SQL Server 2005 Express、Management Studio Expressを使ってます。
同じDBを他のPCにもすぐ用意出来るようにするためにダンプファイルを作りたいのですが、
作り方がわかりません。

右クリック→名前を付けてスクリプト化ってやつですか?

680 :NAME IS NULL:2006/11/17(金) 15:05:18 ID:???
>>678
独自といえばそうだが、多国語文字を直接SQLにコンスタントに埋め込む必要はあるのか、
プレースフォルダで指定してパラメーターにすれば問題なく使えると思うのだが。

681 :NAME IS NULL:2006/11/17(金) 15:05:59 ID:???
>>679
Oracleのexp/impユーティリティのようなものを期待してるならそんなものは無い。
ローカルやオンラインで繋がってる環境ならIntegration Services(2005)かDTS(2000)が使えるが
expressではサポートしていない。
データベースの規模が小さいならデタッチしてまるごと持ってゆくのが吉。

682 :NAME IS NULL:2006/11/18(土) 18:38:36 ID:???
SQL Server 2005SP1にてデータベースミラーリングを組もうとしています。
プリンシパル、ミラー、ミラー監視を同マシンにてインスタンスを3つ作って
ミラーリングする分にはまったく問題なく行くのですが
ミラーを別のマシンにしてミラーリングするとうまくいきません。

具体的にはALTER DATABASE でパートナーを指定するときに
ミラー→プリンシパルのパートナー指定はうまくいくのですが
プリンシパル→ミラーのときのALTER DATABASEがエラーコード1418が
発生しうまくいかないです。

いろいろ調べたところドメイン環境だと何も考えなくて言いようですが
ローカルシステムユーザにて実行している場合はユーザ認証がらみの
エラーが出てしまうようです。
MSDN等見て証明書を発行したりしてみたものの、うまくいかないのですが
誰かマシン2台+非ドメイン環境でミラーリングを組んで成功した人は
いないでしょうか?



683 :NAME IS NULL:2006/11/21(火) 23:15:04 ID:obYC19E+
技術的な質問ではないのですが・・・
SQLServerにSQLサーバ認証でクライアントアプリを接続した場合、SQLServerのライセンスは
1接続分必要ですがWindows鯖への接続はノーカウントで良いのでしょうか?

684 :NAME IS NULL:2006/11/22(水) 15:22:47 ID:???
Windows鯖への接続も
不特定多数の場合ならExternalConnectionLicense。
そうでないなら通常のCALが必要のはず。

685 :NAME IS NULL:2006/11/23(木) 16:58:36 ID:v1iq/dyp
Transact SQLをつかって新規Databaseを作成する際に

--------------------------------------------------------
CREATE DATABASE [whiskey_love] ON PRIMARY
( NAME = N'whiskey_love', FILENAME = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\whiskey_love.mdf' ,
SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ).....
--------------------------------------------------------

ですとDatabaseを作成できるのですが、ファイルパスを変数として容易に変更可能にしようとして

--------------------------------------------------------
DECLARE @dbpath nvarchar(128)
SET @dbpath = N'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\whiskey_love.mdf'

CREATE DATABASE [whiskey_love] ON PRIMARY
( NAME = N'whiskey_love', FILENAME = @dbpath,
SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ).....
--------------------------------------------------------

とすると

-------------------
メッセージ 102、レベル 15、状態 1、行 16
'@dbpath' 付近に不適切な構文があります。
-------------------

と表示されてしまいます。
CREATE DATABSEではFILENAMEに変数を使用することはできないのでしょうか。

686 :NAME IS NULL:2006/11/23(木) 17:18:16 ID:???
>>685
sp_executesql

687 :NAME IS NULL:2006/11/23(木) 18:10:31 ID:???
TransactSQLって案外その辺変数とかが自由に使えないよね。

ストアド内でIdentityの列を持った一時テーブル作るところで
初期値を変数でセットしたかったんだけど出来なくて悔しかった覚えがある。

688 :NAME IS NULL:2006/11/24(金) 17:16:44 ID:???
SQL Server 2005 なのですが、テーブルのスクリプトを作成する時に、
列のプロパティの「説明」の部分を出力したいのですが、
SQL Server Management Studio で出力するとこの部分が出力されず、
方法がわかりません。

列の説明の部分も含めてスクリプトに出力する方法があれば教えて
頂けないでしょうか?

689 :NAME IS NULL:2006/11/27(月) 19:33:50 ID:???
VBでSQLDMOにてバックアップをとったまではいいんですが、
そのバックアップをリストアしようとすると「排他アクセスできません・・・」
というエラーが出てしまい、リストアができません。
何が原因か不明なのでどなたかアドバイス下さい。


690 :NAME IS NULL:2006/11/28(火) 23:13:31 ID:???
シングルユーザモードで起動してないとか。

691 :NAME IS NULL:2006/11/29(水) 11:12:23 ID:???
親ストアドから、子ストアドのトランザクションを制御することは可能なのでしょうか?
たとえば、ストアドAからストアドB1、B2を呼ぶような構成の場合、
B2でエラーが発生したらB1、B2のロールバックをA1で行う、といった流れです。

692 :NAME IS NULL:2006/11/29(水) 11:32:13 ID:???
最後の行ミスりましたorz
×ロールバックをA1で行う〜
○ロールバックをAで行う〜

693 :NAME IS NULL:2006/11/29(水) 13:44:21 ID:???
>>691
できる。
MSSQLのトランザクションはネストできるから、たとえB1、B2の中にトランザクションがあってもそれなりに動く。
それなりの中身が気になるならBOLを参照。

694 :NAME IS NULL:2006/11/29(水) 15:50:52 ID:???
>>693
thxです!BOL漁ってみまつ

695 :NAME IS NULL:2006/11/29(水) 18:26:10 ID:Nq3VYQ/3
varchar (MAX)だけど、使いやすっ
結構レスポンスも早いけど・・・使いまくってるが大丈夫かなぁ。

みんなそう?

696 :NAME IS NULL:2006/11/30(木) 00:21:12 ID:???
2005使ってるんだが、メンテナンスプランでジョブの実行順序が
制御できないんだが、漏れだけか?
ジョブはテーブルのcsvエクスポートをSSIS保存したのを、
そのままステップにいくつか登録してジョブとしたもの。
これと同じようなジョブをもう1つ作って(1つのジョブにしなかったのは
それぞれ単体でも実行したいから)、この2つを順番に実行したいから
メンテナンスプランからジョブをまとめました。

メンテナンスプランで矢印を繋いで制約を完了とか成功にしてるんだが
それぞれのジョブがパラレルで動いてしまうのです。
なんか勘違いしてますかね。

697 :NAME IS NULL:2006/11/30(木) 23:21:53 ID:aXwUgIXF
SQL Server 2005のアップグレード版ってないのかなーと思って色々検索していたら
「SQL Server 2005の開発を教訓に」--MS、製品開発サイクルを短縮へ」
ttp://japan.cnet.com/news/ent/story/0,2000056022,20091071,00.htm?tag=lol.rel
「MSはSAユーザーに報いるべき」
ttp://itpro.nikkeibp.co.jp/free/NT/WinColumn/20050323/4/?ST=print
こんな記事を見つけたんだけど、これを読んで皆さんはどう思いますか?
やはりMicrosoftにはSQL Server 2000をSA契約込みで買ったユーザーに対して
サポートする道徳的義務があると思う?思わない?

ところでSQL Server 2005にはアップグレード版ってあるのでしょうか?価格はいくら?

698 :NAME IS NULL:2006/11/30(木) 23:51:02 ID:EIrKJZOX


http://sports2.2ch.net/test/read.cgi/entrance2/1148302893/104

↑奇跡のエロサイト発見

699 :NAME IS NULL:2006/12/05(火) 17:10:38 ID:???
WindowsVistaにSQLServerをInstallして使っているのですが、
接続に時間がかかります。
で、エラーログを調べてみたらこんなエラーが出てました。


ソース 'Microsoft-Windows-Security-Auditing' のイベント ID '5061' の説明が見つかりません。
必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピュータに存在しない
可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。
次の情報はイベントの一部です:'S-1-5-18', 'コンピューター名$', 'ワークグループ名',
'0x3e7', 'Microsoft Software Key Storage Provider', 'RSA', 'Microsoft SQL Server$MSSQLSERVER$FallBackCert',
'%%2500', '%%2480', '0x0'


よく見てみるとイベントIDはいくつかの種類がありますがすべて
ソース 'Microsoft-Windows-Security-Auditing'
で始まるエラーです。

SQLServer2005 SP2ですが、これで何かわかるかたはいらっしゃいますか?

700 :699:2006/12/06(水) 09:47:34 ID:???
未だによくわかっていませんが、とりあえずExpressを使うと大丈夫そうなので
それで対応しました。
とりあえずということですが・・。

701 :NAME IS NULL:2006/12/06(水) 10:55:28 ID:YuO4Y4BI
vistaみてーな正式版も出てない怪しいおもちゃでDBを運用するようなヤツがいるのか?
まだ公式な情報も無いし、あちこち大幅に変わってるし、メーカーも対応してないのにか?
遊びや実験でやるんならわからんでもないが

702 :NAME IS NULL:2006/12/06(水) 11:05:23 ID:6GghITXQ
Microsoft Accessのテーブル内フィールド最大個数は255個
Microsoft SQL Serverのテーブル内フィールド最大個数は何個ですか?

703 :NAME IS NULL:2006/12/06(水) 12:01:06 ID:???
1024カラム/行。むしろ8,060バイト/行の制限ほうが先にくる。

704 :NAME IS NULL:2006/12/06(水) 12:04:07 ID:???
>>703
d

705 :699:2006/12/06(水) 12:47:36 ID:???
>>701
別に正式に運用しているわけではありません。
テストしてるんです。
それと正式版です。

706 :NAME IS NULL:2006/12/06(水) 12:49:46 ID:???
MSDNな人と企業ユーザーの一部は正式版使えるな
しかし、クライアントならともかくサーバーをいきなりテストする意味は

707 :699:2006/12/06(水) 12:57:26 ID:???
>>706
私が悪かったです。ごめんなさい。
荒らしてすみませんでした。

708 :教えてください・・・:2006/12/06(水) 14:51:46 ID:lAjnh/tr
Sql server management studio express でテーブルを開く際、いちいち右クリックしないといけないんでしょうか?
他のDBのツールの癖でついリターンキーを押下してしまいます。

709 :NAME IS NULL:2006/12/07(木) 19:37:09 ID:iGAVIqmT
今までLANだけで使っていたSQLServerがあるのですが、
これをHTTPしか使えない外からアクセスしなくてはならなくなりました。
例えばSQLServerのネットワークプロトコルをHTTPでWrapするようなものって
ないでしょうか?

710 :NAME IS NULL:2006/12/07(木) 20:11:27 ID:???
SQL Server 2005での開発において、charとvarcharの違いに困っております。
当初は固定長と可変長の違いくらいしかない程度に思っていたのですが、

char(5)のフィールドに”あいうえお” -> OK
varchar(5)のフィールドに”あいうえお” -> NG(「文字列データまたはバイナリ データが切り捨てられます」エラー)

となってしまい、目論見が外れてしまいました。
http://msdn2.microsoft.com/ja-jp/library/ms175055.aspx
によると、「varchar(6) は、このデータ型に最大 6 文字まで格納できることを示します」となっているので、
てっきり全半角関係なく文字が入るものと思っていたのですが・・
何か他に見落としている違いがあるのでしょうか?

711 :NAME IS NULL:2006/12/07(木) 20:46:44 ID:???
すいません、勘違いだったみたいです。両方で同じ結果が得られました
スレ汚し失礼しましたorz

712 :NAME IS NULL:2006/12/07(木) 22:07:47 ID:???
charのつもりがncharだったとかかしら
charとvarcharなら、どっちも`あいうえお'は入らないし。

713 :NAME IS NULL:2006/12/07(木) 23:27:39 ID:???
charは、固定長の文字列
varcharは 可変長の文字列として扱われる
日本語は2バイトとして扱われるので5バイトであれば3文字格納しようとするとエラーになる。

nchar、nvarcharはUnicode文字列を扱うためのデータ型。こちらはシングルバイト文字も2バイトとして格納される。
おれみたいにWebシステムばかりつくっているとncharとnvarcharをもっぱら利用する。

714 :NAME IS NULL:2006/12/08(金) 18:08:31 ID:i4CIm9Hz
同一DBからバックアップした日時の異なる2つファイルを同一マシンの復元して
サブクエリを使った同一条件のSQLをManagementStudioのクエリから実行すると
バックアップした日付の新しいDB(対象件数が多い)ではtempdb.mdfが90MB程度増加するのに対して
バックアップした日付の古いDB(対象件数が少ない)ではそれが7GB以上増加するのですが
件数が少ないにも関わらずtempdb.mdfが多い処理に比べて増加する原因は何が考えられますか?

ProfilerでデバッグするとReportServerが[Event]テーブルに対し繰り返しI/Oを行って
その度に増加しているのですが現象の原因がよく分からないのです


715 :NAME IS NULL:2006/12/08(金) 22:50:17 ID:R+mvYS7n
SQL Server 2000を初めて使うことになったのですが、text型のデータの
出し入れのやり方がわかりません。

MySQL3で動いていたものを移植しているのですが、単純に移植したら
大きいデータが途切れて返ってくるのですが、、、

どうしたらいいものでしょうか
助けてください、、、

716 :NAME IS NULL:2006/12/08(金) 23:01:15 ID:???
>>715
なにで使ってんのかぐらい書けよ。PHPか?

717 :NAME IS NULL:2006/12/08(金) 23:08:38 ID:???
>>716
FreeBSD6.1
Apache1.3
PHP5
です。


718 :NAME IS NULL:2006/12/10(日) 11:38:27 ID:ke+O4cHU
インターネットを通じてSQLサーバー間でデータをやり取りする方法を
教えてください。

下記の方法を想定しています。

1.会社内で顧客を登録(SQL A)
2.インターネット上に置いたSQL(SQL B)にそのデータを同期
3.SQL Bにある顧客名を携帯からプルダウンで選択させ、営業報告結果
  を入力させる。
4.入力したデータをSQL Aに反映させる


SQL B についてはホスティングサービスでSQLServer
が使えるところを想定しています。

入力データをテキストファイルに出力してFTPでとってくる方法もあるかもしれませんが、
取得間隔とかエラー処理をあまり気にしたくないので、SQLServerでできないかと。

同一ネットワーク間だと資料は当然あるのですが、上記のケースは見かけませんでした。

SQL BをMyとかポスグレというのは無理ですよね。

719 :NAME IS NULL:2006/12/10(日) 12:10:53 ID:???
>>718
できる、できないの話ならできるし、Internetの鯖がMySQLだろうが
Sybaseだろうが可能だろう。

ただ、>>718程度の知識でソレを実践しようとすると、
そのプロジェクトはデスマ決定だろうなぁ。

720 :NAME IS NULL:2006/12/10(日) 12:16:50 ID:ke+O4cHU
>>719

できるできないの返答ではなく手段を聞いているのだ。

要はおまいは説明できないんだろ?

「Internetの鯖がMySQLだろうがSybaseだろうが」

この文の書き方時点で、俺以下確定だ。


721 :NAME IS NULL:2006/12/10(日) 12:19:06 ID:???
ID:ke+O4cHUが必死になってまつな

722 :NAME IS NULL:2006/12/10(日) 12:20:00 ID:???
アフォなSEが2chで質問して逆ギレでつか

723 :NAME IS NULL:2006/12/10(日) 14:05:07 ID:???
DB板には珍しい現象ですね!(・∀・)ニカ!

724 :NAME IS NULL:2006/12/10(日) 16:24:31 ID:???
普通にSIerに相談しろって事だろ。
しかし、そういう案件でSQLServerに拘る理由がわからんが。
どんなシステムでもエラー処理は気にしなきゃいけないし、
「気にしたくないのでSQLServer」ってのがワケわからん。

相談される方も商売だから対応するだろうけど、
携帯系だとMySQLやSybaseの方が導入実績多いんだが。

725 :NAME IS NULL:2006/12/10(日) 17:24:55 ID:???
>718
BOLはもってないんか?
ちょっと、目次を眺めてみようとか思わんのか?
なんかわけわからん噛み付きしてるしみてて気の毒になってきた。

726 :NAME IS NULL:2006/12/10(日) 22:48:20 ID:???
>>718
ところで、もしその2つのSQLServerが同じLAN内にあったとしたら、
その2つのSQLServer間のデータのやりとりは出来る当てはあるの?

インターネットだろうがLANだろうがTCP/IPには変わらないので、
同じやり方すればいいんじゃね?

727 :NAME IS NULL:2006/12/11(月) 00:00:16 ID:CSR5Laje
>>718
SQL鯖側のポート1433を空けておけばLAN内の鯖接続と同じさ!


728 :NAME IS NULL:2006/12/12(火) 18:36:03 ID:???
そして、LAN内と同じようにウイルスにやられると・・・

729 :NAME IS NULL:2006/12/12(火) 22:33:46 ID:???
saのパスワードブランクでヨロw

730 :NAME IS NULL:2006/12/13(水) 00:14:26 ID:yVx21Jep
つーことで、レプリケーション使えばいいんだよね?
しかし安いレンタル鯖では無理だろうな。専用鯖ならいいが。

話それるけど、わかってはいても SQL Server を SQL って略すのは慣れないなぁ。
俺の前の上司がそうだったんだけどさ(w

731 :NAME IS NULL:2006/12/13(水) 06:34:30 ID:???
そしてデスマが始まるのか…

732 :NAME IS NULL:2006/12/13(水) 15:09:04 ID:???
♪やっとこやっとこくりだしたー

733 :NAME IS NULL:2006/12/14(木) 15:09:47 ID:EhO4PNVc
>>718 のレベルじゃ概要設計もままならないだろうに
メンバがかわいそうだよ

734 :NAME IS NULL:2006/12/14(木) 19:53:10 ID:???
妙なトコで金をケチって大失敗するいい例だろうなぁ。

735 :NAME IS NULL:2006/12/14(木) 23:05:49 ID:???
>>733
>>718 に任せてる時点でメンバも似たようなモンなんだろ。

736 :NAME IS NULL:2006/12/14(木) 23:20:25 ID:???
SQLServer2000で、毎年3月31日の23時50分にSQLを実行するような
ジョブをスケジューリングしたいのですが、可能でしょうか?

日付を3月31日に指定しても次の31日(5月31日)に、
再度実行されてしまいます。

737 :NAME IS NULL:2006/12/15(金) 14:08:08 ID:???
>>736
10年分くらい手動で登録しておくとかw
それ以降は保守費用が必要ですよと・・・。


738 :736:2006/12/16(土) 00:31:24 ID:???
>>737
それは最終手段ということでw
どうしても無理っぽかったらそういう方向でいこうかと思います。

739 :NAME IS NULL:2006/12/20(水) 01:07:19 ID:11kqGl3X
インストールの時にシステムデータベースやtempdbの配置を細かく指定する方法ありますか?
データファイルとトランザクションログを別ディレクトリに配置したいのですが…

740 :NAME IS NULL:2006/12/20(水) 22:52:21 ID:aocdH2Ll
メンテナンスプランのインデックスの再構築で、
「ページごとの空き領域比率を変更する」に20%をいれといたら、
DBのサイズが4倍に膨れ上がったorz。これはMSのワナですか?

741 :NAME IS NULL:2006/12/21(木) 01:38:54 ID:???
>>740
FILLFACTORは指定の%だけデータをつめる指定だから、4〜5倍になるのは当然じゃない?
別のDBMSでは空き分を指定するものもあるからたまに勘違いするやからがいる。

742 :NAME IS NULL:2006/12/22(金) 01:17:01 ID:NXkTsvze
>>741
一度はそう思って納得してたんだが、
SP1を適用後、「ページごとの空き領域比率を変更する」に80%
を設定したら、またしても4〜5倍に膨れ上がった…orz
2重トラップかーーーー!?


743 :NAME IS NULL:2006/12/22(金) 15:30:10 ID:8Jl2GbsI
CPU が Crusoe TM5800/800MHz
NECサーバ CS58(Win2003Std) に
SQL Server 2005 Express を入れようとしたが
途中でインストールが失敗する。

MSDNにも同様の書き込みが。
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=496500&SiteID=1

ちまちま省エネサーバ計画、頓挫。

744 :NAME IS NULL:2006/12/22(金) 16:04:32 ID:???
>>743
CrusoeはCPUチェックで蹴られるお。

745 :NAME IS NULL:2006/12/22(金) 16:20:58 ID:Gv6jbZYz
2000から2005に移行中です。
ユーザーをsp_help_revloginで移す予定ですが、オブジェクト権限とかは設定しなおしですか?

746 :NAME IS NULL:2006/12/23(土) 10:58:07 ID:???
SQLServer2000+ADOのありがちなシステムの
ソースチェックを依頼されたので、見ているのですが
接続プールを自前で実装しちゃっています。
ADOにプール無いんでしたっけ?
(デフォルトで作動しているような気がするんですが)



747 :NAME IS NULL:2006/12/23(土) 16:26:15 ID:???
>>746
そのとおり。無効にする場合は接続文字列などで制御する。
"OLE DB Services = -2;" とか。

Microsoft Data Access Components を使った OLE DB のリソース プーリング
http://msdn.microsoft.com/library/ja/jpdnmdac/htm/ole.asp

前に接続プールを自前で実装したはいいものの、シングルスレッドで動かしちゃってて "遅い!" って怒っている人を見た。

748 :NAME IS NULL:2006/12/23(土) 17:45:31 ID:???
>>747
まさに欲しかった情報です。ありがとうございます!

マルチスレッドだと若干扱いが難しくなるようですね。
プログラム全体で閉じないConnectionを1個
各スレッドで扱うConnctionは1個
って感じでしょうか

749 :NAME IS NULL:2006/12/24(日) 21:50:24 ID:???
SQL SERVER 2005をアンインストールしたいんだけど、コントロールパネルから
アンインストールをすると必ず失敗する
どうすればいいの?

750 :NAME IS NULL:2006/12/24(日) 21:56:38 ID:???
OS入れなおせw


751 :749:2006/12/24(日) 22:05:54 ID:???
やっぱり?
ttp://support.microsoft.com/kb/909967/ja
のとおりやっても駄目なんだよね

Virtual Serverfにインストールするべきだった。
やばくなったらファイル削除するだけだし

752 :マルチポスト警報:2006/12/26(火) 00:53:32 ID:???
>>746-748
SQLServer2000 接続プール
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=1048230&SiteID=7

753 :NAME IS NULL:2006/12/26(火) 11:01:18 ID:???
SQLServer2000のフルテキスト検索を試しているんですが、
NorthwindのCategoriesで試しても0件しか帰ってこないです。

条件の指定がおかしいのでしょうか?
下記のクエリーで試しているのですが。
select * from Categories
where CONTAINS(Description,'Sweet')

サポートサービスのフルテキスト検索も始まっていて、
クエリー実行時も特にエラーは起きていないようなんですが。

754 :NAME IS NULL:2006/12/27(水) 01:52:54 ID:HQEHQMMV
ファイル配置を検討中です
700GB程度のDBですが、データファイルサイズは皆さんどれくらいにしてます?
1ファイル50GBくらいにしたほうがいいのかな〜?
この辺りの定石があったら教えてください

755 :NAME IS NULL:2006/12/29(金) 12:35:58 ID:???
nchar と nvarchar ですが、5桁程度の文字列の場合で、100%固定長ではない場合
(だいたい5桁はいるけど、まれに それ以外の桁数が発生する)

こんな場合、みなさんなら nvarchar を使いますか?
それとも、nchar を使いますか?

ちなみに、この項目は、そのテーブルのプライマリキーです。

桁数が多い時は無条件に nvarchar を使いますが、短い時は、
nchar にすべきか、nvarchar にすべきかいつも迷います。

アドバイスください。

756 :NAME IS NULL:2006/12/29(金) 13:49:31 ID:???
固定でいいんじゃね?


757 :NAME IS NULL:2006/12/29(金) 16:24:44 ID:???
100%固定長でない値が入るカラムを固定長にすると
直接select文でデータを見たいときとか
いちいちwhere xxxx = ' 1234' みたいに聞かなきゃいけないから面倒くさい

758 :NAME IS NULL:2006/12/29(金) 16:28:02 ID:???
>>755
> それ以外の桁数が発生する

細かいことだけど「それ以下」じゃなくて?

おれは、基本的に同一の桁数にならない場合は varchar 系を使う。

char 系だと、桁数が不足している時に後にくっつく空白の存在を忘れ
てバグってしまったことがあるから。

759 :NAME IS NULL:2006/12/29(金) 17:29:26 ID:???
>>755
データをゼロパディングさせられれば固定長。
でなければ可変長だな。

246 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)