Microsoft SQL Server 総合スレ 4

このエントリーをはてなブックマークに追加
1NAME IS NULL
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/
2NAME IS NULL:2006/03/14(火) 23:24:34 ID:wdw0js8n
>1 乙
3NAME IS NULL:2006/03/15(水) 20:30:48 ID:???
オラが無償のDB開発ツール配布始めたけどMSでも出そうですかな?
VS2005Expressのアドインとかで
4NAME IS NULL:2006/03/15(水) 22:08:08 ID:???
>>3が自作ツール配ってんのかと思った
5NAME IS NULL:2006/03/15(水) 22:14:17 ID:???
>>4
違うの?
6NAME IS NULL:2006/03/16(木) 10:47:15 ID:???
Production機でNorthwindとpubsを残しておくなよヴぉけ
7NAME IS NULL:2006/03/16(木) 22:30:59 ID:EbpOc3DQ
DBについて全くの初心者です。
排他ロックについてお尋ねしたいのですが、
SQLでのテーブル単位やレコード単位のロックの方法はわかったのですが、
DB全体のロックの方法がわかりません。
どなたかご教授をお願いしたします。
8NAME IS NULL:2006/03/16(木) 22:44:30 ID:???
>>7
TABLOCK
ロック関係は初心者が手を出すとたいてい痛い目にあう箇所だから、
BOLのロックヒントのところをよく見ておくといい。
97:2006/03/16(木) 23:16:02 ID:???
select * from テーブル名 with(tablockx,holdlock)
でテーブルのロックができると思いますが、
DB全体をロックするにはどのような構文になるのでしょうか?
10NAME IS NULL:2006/03/16(木) 23:19:55 ID:???
>>8
それ、テーブルロックでは
1110:2006/03/16(木) 23:21:31 ID:???
それ以前に、データベース(のインスタンス)をまるごとロックして
なにかいいことあるのかと尋ねてみたいが
127:2006/03/17(金) 00:03:33 ID:???
データセンターにあるDBに複数のクライアントが
アクセスするシステムで、クライアントの1人が
DBを更新している時に他のクライアントはデータを参照・更新
できなくさせたいらしいのです。
1310:2006/03/17(金) 00:22:53 ID:???
あの…排他ロックって…わかって書いてる??

釣られたのか漏れorz
14NAME IS NULL:2006/03/17(金) 00:24:22 ID:???
もしかしてシングルユーザーモードで起動するってこと?
1510:2006/03/17(金) 00:27:35 ID:???
「データセンターにあるDBに複数のクライアントが
 アクセスするシステムで、クライアントの1人が
 DBを更新している時に他のクライアントはデータを参照・更新できないようにする」
のが排他ロックです。

ふつうはデータベースまるごとロックなんてしない
やり方ググったら出たけど、危ないからキミには教えない w
167:2006/03/17(金) 00:48:03 ID:???
自分の日本語がおかしいかったようでうまく伝えることができず
申し訳ありませんでした。
教えないですか・・・ん〜、残念です。


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

18NAME IS NULL:2006/03/17(金) 07:05:40 ID:???
19NAME IS NULL:2006/03/17(金) 08:32:52 ID:???
>>7
http://www.microsoft.com/japan/technet/prodtechnol/sql/2000/evaluate/exercises.mspx
まずは、ここの「開発編 No.9 トランザクション編」を読んでね。
20NAME IS NULL:2006/03/17(金) 09:30:23 ID:???
>>18
dd
2110:2006/03/18(土) 12:27:55 ID:???
>>16-17
ロックによる書き込み衝突を絶対回避しなくちゃいけないぐらい
(コンサートチケット購入システムとか)じゃないかぎり、
デフォルトのままなんだよ。デフォは行ロックだけど、
ロックする行数が増えると、自動的にテーブルロックに切り替わる

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

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

そんなヤバいことしようとしてるのに、その「特別な意味」を>>7は教えてくれない
もしかすると、>>7が考えてるようなシナリオを、ほかの方法で回避できるかもしれないし
それをここの誰かが教えてくれるかもしれないし
なにしろやらないにことたことないんだよ。
2210:2006/03/18(土) 13:46:41 ID:???
>>21
× ことたこと
○ こしたこと

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

というのも、ロックエスカレーションでは
いきなりテーブルロックとか、はてはDBロックがかかるんですよね?
(Updateクエリのwhere節がひっかける行数÷総行数で判断??)
条件さえよければ、インデックスロックでも済みそうな気もするのに…
自分で明示的に指定する場合はいいんだけど、
自動判断のチューニングってできんのかなぁ…
23NAME IS NULL:2006/03/19(日) 18:42:02 ID:???
>22
まず>19を読んだら?
24NAME IS NULL:2006/03/22(水) 22:18:40 ID:fuQNcWXy
>>22
エスカレーションの閾値とかは設定できないよ、SQL server 2000では。2005だと設定できるか知らんけど。
2510:2006/03/22(水) 23:29:38 ID:???
>>24 了解

自習書読んでも書いてなかったので
26NAME IS NULL:2006/03/23(木) 02:12:25 ID:???
ttp://msdn2.microsoft.com/ja-jp/library/ms172010.aspx
2005Mobileにだけあるみたい。
SET LOCK_ESCALATION 1000;
27NAME IS NULL:2006/03/23(木) 11:53:45 ID:jtgDaKQq
10000円ぐらいの本に
どれぐらいで六エスカレーションがおきるか
書いてたようなきがする
28NAME IS NULL:2006/03/23(木) 12:56:25 ID:???
29NAME 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 個のロックを獲得したとき。
・データベース エンジン のインスタンスのロック数がメモリまたは構成のしきい値を超えたとき。
30NAME IS NULL:2006/03/23(木) 20:10:34 ID:???
31NAME IS NULL:2006/03/24(金) 14:10:01 ID:???
exchange serverを使わずにsql agentから警告をメールで通知する手段ってありますか?
agentを停止させてからoutlookを起動して〜とかやればいけるみたいですけど
32NAME IS NULL:2006/03/24(金) 16:32:46 ID:???
>>31
ジョブの作成してステップの作成で、ActiveXスクリプトをちょちょっと作ってやればいい。
具体的なやり方は「SQL Server 2000でいってみよう」のP166に書いてある。BASP21が必要だけど。
ぐぐればWeb上にもあるかもしれん。
2005ならデータベースメールが使えるらしい。
33NAME IS NULL:2006/03/24(金) 16:42:35 ID:???
>>32
さっそくその本を買ってみます
ありがとうございました
34NAME IS NULL:2006/03/24(金) 18:04:25 ID:???
ActiveX を使うまでもなく、xp_cmdshell でコマンドラインメーラーを叩くのが楽じゃね?
35NAME IS NULL:2006/03/25(土) 05:35:26 ID:???
>>32
2005ってメールできるんだ
ようやくそこまともになるんだなw
36NAME IS NULL:2006/03/25(土) 13:25:25 ID:zNp4bawA
年内の開発は、まだ2000を選択するよね?
37NAME IS NULL:2006/03/25(土) 18:30:24 ID:???
新規の案件は2005でやってるよ。
38NAME IS NULL:2006/03/27(月) 19:26:42 ID:5TsWkfRW
Microsoft SQL Enterprise Manager

Microsoft Corporation

バージョン: 8.0
のバージョンを使用しているのですが、これではフルテキスト(全文検索)
は対応していないのでしょうか?
テーブルを右クリックすると「テーブルのフルテキストインデックス」という部分が
使用できないようになっていて困っています。
3938:2006/03/27(月) 19:38:21 ID:???
失礼しました。
MS SQL SERVER 2000です
40NAME IS NULL:2006/03/27(月) 19:56:18 ID:???
対応はしているが、機能するかどうかはインストール時に指定が必要じゃなかったか?
41NAME IS NULL:2006/03/27(月) 21:20:46 ID:???
今、2000用のBooksOnline見てみた。
インストール時にフルテキスト検索をするかしないか、
するのであればどういうオプション(インデックスの置き場所とか)でインストールするか
決めるぽいなりよ。
42NAME IS NULL:2006/03/28(火) 14:46:29 ID:???
機能がインストールされているかどうかはEnterprise Managerの
「サポートサービス」枝から確認できる。
43NAME IS NULL:2006/03/30(木) 00:54:32 ID:???
Management Studioって重いね。
メンテってこれつかうしかないんだよね。
44NAME IS NULL:2006/03/30(木) 07:46:29 ID:???
>>43
とっても軽いSQLCMDがありますよ。
45NAME IS NULL:2006/03/30(木) 09:57:48 ID:???
>>43
.NETアプリだから。
46NAME IS NULL:2006/03/30(木) 14:09:41 ID:???
SQLCMDでsp_helpやsp_tableなどを使うと表示がめちゃくちゃで見れたものではないのだが、
なんかいい方法ないですか。
47NAME IS NULL:2006/03/30(木) 16:07:28 ID:???
>>46
クエリの結果をテキストに出力するとか。
48NAME 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'
49NAME IS NULL:2006/04/03(月) 12:28:35 ID:kIg6E8cf
SqlServer 2005 WorkGroupエディションって、データベースのコピーができないのですか?
Sysadminのメンバーでログインして(Windows認証)で、ウィザード起動してその通りやっても、
最後で
「@subsystem_name('SSIS')が存在しません。」
 「プロキシ アカウントを指定してください」
とか怒られるわりには、プロキシアカウントをどこで指定しろと?

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

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

インストールされている/いないを確実に判断する方法があれば
教えてください。
51NAME IS NULL:2006/04/03(月) 20:43:38 ID:???
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer
52NAME IS NULL:2006/04/04(火) 12:54:51 ID:TvtM7foX
そろそろ運用している所もあると思うが
2005の使用感、その他諸々は
いかがなもんでしょうか?
53NAME IS NULL:2006/04/04(火) 18:19:35 ID:???
Management Studio は重いけど、操作性は良好。バグが少々。
BI 機能の進化は素晴らしい。
けど KPI のアイコン表示だとか課題があるから真価を発揮するのは 2007 Office が出てからだと思う。
Visual Studio 2005 との統合で、ソリューションやプロジェクトの単位で
作業可能にになったのが嬉しい。
54NAME IS NULL:2006/04/04(火) 18:29:27 ID:???
SQL鯖2005で質問させてください。

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

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

どなたか上手くCLRでコネクション張れた方はいらっしゃらないでしょうか?
55NAME IS NULL:2006/04/04(火) 18:47:15 ID:ly+yMBFO
Like句で教えてください
3つのカラムの中で「A」と「B」という語句を抽出したいときLike句を使おう
と思っていましたが、うまくいきません。

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

条件は「A」だけとか「B」だけという事もあれば両方使われる場合もあります。
お願いします
56NAME IS NULL:2006/04/04(火) 18:49:56 ID:???
>>54
構成ツールのセキュリティ構成でCLRをオンにする。
オンになってるならPERMISSION_SETをいじる。
CREATE ASSEMBLY ... WITH PERMISSION_SET = 
このあたりでどうですか?
57NAME IS NULL:2006/04/04(火) 18:52:37 ID:???
>>55
xx LIKE '%A%' OR xx LIKE '%B%'

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

5954:2006/04/05(水) 00:26:40 ID:???
>>56
レスありがとうございます。
CLR統合をオンにするは実施済みなのですが、パーミッション系に問題がありそうなので、
ご指摘のPERMISSION_SETまわりを見直してみます。
60NAME IS NULL:2006/04/05(水) 16:58:23 ID:???
Management Studio Expの正式日本語版まだ〜?
61NAME IS NULL:2006/04/06(木) 17:18:58 ID:???
MSSQL2000のAvailabilityをレポートするツールでFreeのものとかあります?
62NAME IS NULL:2006/04/07(金) 16:36:04 ID:???
uniqueidentifier型のカラムにADOでGUIDを登録したいのですが
rs.Fields("hoge").value = "4324-34342-4-2343-32-4"
のような感じで。
しかし、型が違うので登録できません。
GUIDをuniqueidentifier型に登録する方法がありましたら
教えてください。
6362:2006/04/07(金) 17:25:01 ID:???
事故解決しました。
rs.Fields("hoge").value = "{4324-34342-4-2343-32-4}"
64NAME IS NULL:2006/04/07(金) 18:56:17 ID:5O1JP5O4
SQLDataAdapterを使ってインサート文を投げているのですが、
行数が多くてタイムアウトしてしまいます(;´д`)

回避する手段は無いでしょうか?
65NAME IS NULL:2006/04/07(金) 19:55:32 ID:???
>>64
タイムアウトはどこで起きてますか?
この手の質問で実はASP.NETでタイムアウトが起きてたという落ちが多いけど。
6664:2006/04/07(金) 21:02:04 ID:???
>>65
.netのタイムアウトもあるのですか!?
updateしているところでタイムアウトしてるようなのですが…

.netのタイムアウト設定はどこをみれば変えられるのでしょうか?
67NAME IS NULL:2006/04/07(金) 21:30:22 ID:???
>>64
どこでどういうメッセージが出たからタイムアウトと判断したか具体的に示せということだな。
それからSQL Serverや.NETのVersionや言語、ASP.NETかどうかなど。
推測で答えたらきりがないだろう。
68NAME IS NULL:2006/04/07(金) 22:52:15 ID:???
>>インサート文を投げているのですが
>>updateしているところでタイムアウトしてるようなのですが… 
はは、こやつめ
69NAME IS NULL:2006/04/08(土) 20:12:03 ID:cS1HhYAx
>68
insertはSQLで
updateはミドルウェアのメソッドだろ。
まあ、ちゃんと書いていない>66が悪いんだが。
つーか、区別がついてないんだと思われ。
>66は日本語じゃなくてコード書け。
70NAME IS NULL:2006/04/08(土) 23:40:42 ID:???
.netのSqlCmmandオブジェクトのクエリタイムアウトはデフォルトで30s
リフレクションで調べたら、ソースに直に書いてあったorz
時間のかかりそうなsqlについては毎回クエリタイムアウトを設定するしか…
71NAME IS NULL:2006/04/09(日) 00:50:01 ID:???
>>70
SqlDataAdapterはDataSetの中を見てinsert対象だったら1件ずつInsertCommandを実行するはずだから、
挿入件数がいくら多くても1件当たり30秒の制限は超えないと思うのです。
だからデットロックの1205エラーを疑っていました。
エラーメッセージの詳細がほしいというのはこの辺を確認したかったからです。
72NAME IS NULL:2006/04/10(月) 01:26:29 ID:???
データベース、あるいはテーブルを、中身のレコードをのぞいて定義だけ
コピーしたいんですがどうしたらいいですか?
GUIじゃなくてSQLDMOとかストアドとかのコードで実現したいです。
73NAME IS NULL:2006/04/10(月) 03:51:33 ID:???
>72
1. コピー元データベースをバックアップ
2. コピー先データベースにリストア
3. コピー先データベースの全テーブルTruncate
74NAME IS NULL:2006/04/10(月) 12:37:35 ID:???
>>72
テーブルなら
select * into DEST from src where 0=1

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

>>73氏の方法はIdentity列のシードが1に戻らないため、戻すのに
Identityの再設定が逐一必要になるのが少し難で。
76NAME IS NULL:2006/04/10(月) 19:13:03 ID:???
DBCC CHECKIDENT

truncate table
だけでいいだろ > identity
77NAME IS NULL:2006/04/10(月) 19:38:53 ID:???
>>72です。どうやらSQLDMO.TableやDatabaseにScriptというメソッドがあって、
それでCREATE *** SQL文を作成できるので、あとはDatabase.ExecuteImmediate
(SQLServer.ExecuteImmediate)すればいいみたいです。さっき見つけました。
Scriptの引数でインデックスその他の作成SQLも作れるようです。
78NAME IS NULL:2006/04/11(火) 09:25:54 ID:???
やっぱりテーブル1つ1つDBCC CHECKIDENTやってくしかないか。

みなさんありがとうございました。
79NAME IS NULL:2006/04/11(火) 09:32:08 ID:???
っと、目が節穴だったようだ。
>>77
ちょい調べて試してみます。マジ感謝。
80NAME IS NULL:2006/04/11(火) 13:11:12 ID:???
バックアップに関して教えてください

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

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

ファイルグループで
復元したいテーブルとそうでないテーブルを
ファイルで分けて復元するとできるのかなと
思いましたが、他に方法何かありますでしょうか?
バージョンは特に指定なしで
81NAME IS NULL:2006/04/11(火) 16:09:37 ID:???
いや、指定しろよ。
82name 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

よろしくお願いします。
83NAME IS NULL:2006/04/11(火) 16:58:59 ID:???
84name 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でファイルに落とすのが一番わかりやすいかもね。

86NAME IS NULL:2006/04/11(火) 21:02:59 ID:kfLJ9dky
質問。
一度の処理で4万行ほど更新するプログラムなんだけど、
処理途中でタイムアウト起こすんですよ。
VS2005+SQLServer2005なんだけど、SQL CLRでタイムアウトの設定ってどこでできますかね。
87NAME IS NULL:2006/04/11(火) 21:46:46 ID:???
>>86
>>64-71 あたりを参考に
SqlCommand.CommandTimeout
8886:2006/04/11(火) 23:54:49 ID:kfLJ9dky
>>87
ありがとうございます。
100未満のレスくらいきちんと読めって話ですよね(汗)
89NAME IS NULL:2006/04/12(水) 14:58:42 ID:???
すみません、少し古いですがSQL Server7についての質問です。
多分最新版でも仕様は同じと思いますが…。

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

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

すみませんが、知ってる方よろしくお願いします。。。
90NAME IS NULL:2006/04/12(水) 15:05:03 ID:???
>>89
多分取ってくれるだろうけど保障はできないし、万が一消えても
責任は取れない。ダミーのデータベース作って実験してみたら?
91白馬の玉子 ◆PqSzNbkqDo :2006/04/12(水) 17:34:56 ID:???
>>89

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

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

論理ファイル名と物理ファイルパスが、復元のときにめんどくさいかも
しれんけど。
92NAME IS NULL:2006/04/12(水) 23:34:09 ID:???
お邪魔します。
まったくの初心者なのですが金曜からSQLをやってもらうと言われたので
現在コマンドプロンプトでOSQLのサンプルを打ってるんですがSQLにも種類が
あるんでしょうか?場合によってはOSQL何てやっても役に立たない事になるんでしょうか?
よろしくお願いします。
93NAME IS NULL:2006/04/12(水) 23:41:46 ID:???
>SQLにも種類が あるんでしょうか?

すみません。この板見ただけでも種類があるのは明らかですね・・・
OSQLは無駄かどうかだけ教えてください。
94NAME 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っていうのもあるけど、あまりおすすめしない。

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

といわれてトランザクションのバックアップが失敗してたんですが、
これってTRNファイルが壊れてたって事ですか?
9789:2006/04/13(木) 15:45:41 ID:???
>>90-91
さんくすです。

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

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

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

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

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

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

内の部署SQLやった事ある人居ないんで・・・(他部署にはゴロゴロいるけど部署間の対立で借りは作りたくないらしい・・・
100NAME IS NULL:2006/04/14(金) 00:17:59 ID:???
うまく教えてもらって部署間の和解のきっかけになりなよ。
101白馬の玉子 ◆PqSzNbkqDo :2006/04/14(金) 09:36:49 ID:???
>>97

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

直接DATへのバックアップだと、
バックアップの小技をいろいろ習得しないと、
うまく復元できなくなることあるっすよん。
102NAME IS NULL:2006/04/14(金) 21:09:37 ID:???
遠距離のレプリケーションをもっと簡単に設定できればいいのに
バックアップ目的にレプリケーション使いたいんだけどよくわからん
103NAME IS NULL:2006/04/15(土) 10:49:05 ID:???
>102
ログ配布は?
104NAME IS NULL:2006/04/17(月) 22:03:00 ID:89jdluih
text型にすると、そのフィールドはLIKE演算子で検索できなくなってしまうのでしょうか?
また、他にも制約がありますか?
8000バイトを超える文字データを格納しなければならなくなったのです。
105104:2006/04/17(月) 22:09:16 ID:89jdluih
すいません、LIKEは大丈夫でした。
varchar型からtext型に変更しようと思うのですが、
気をつける点はありますか?
106NAME IS NULL:2006/04/17(月) 22:38:47 ID:???
つ SQL Server 2005
107NAME IS NULL:2006/04/18(火) 00:02:02 ID:???
varchar(max) と textの違いがいまいちわからんね
108NAME IS NULL:2006/04/18(火) 12:18:20 ID:???
つうか、もうtext使う意味は無い。
将来バージョンでは廃止だってよ。
109NAME IS NULL:2006/04/18(火) 20:34:52 ID:???
お邪魔します
一定の間隔で入っているデータを抽出するのに今まではwhere句で
列名 % 3 = 0
などで取っていたのですが取りたいID(主キー)が奇数と偶数混じっている場合どうすればいいのでしょうか?
具体的には1〜22で1,6,10,14,17を取りたいのです。
110NAME IS NULL:2006/04/18(火) 20:38:24 ID:???
in
111白馬の玉子 ◆PqSzNbkqDo :2006/04/19(水) 12:58:57 ID:???
>>109

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

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

なのか、

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

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

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

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

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

規則性のない一定間隔(規則性が崩壊する一定間隔)、ってのが、非常に意味不明。
それって、設計ミスでしょ?
112NAME IS NULL:2006/04/19(水) 22:33:02 ID:???
もう2005はSP1が出るのか
ようやくManagement Studio Expressの正式版がでるのが嬉しい
http://itpro.nikkeibp.co.jp/article/NEWS/20060419/235721/
113109:2006/04/20(木) 19:47:46 ID:Uvn6Jss0
レス遅れ、説明不足すみません
・式を用いて導き出せる集合
らしいので in は使うのはダメらしいです・・・SQL初めてなんで研修中です
今日もこの問題考えてたけど進まなかった・・・アドバイス頼みます
114NAME IS NULL:2006/04/20(木) 20:18:48 ID:???
だから、どういう式なのかと。
115NAME IS NULL:2006/04/20(木) 22:38:34 ID:???
どういう式でもいいケド
式を用いて導き出せるんならFUNCTION使えばいーじゃん
TABLEで返せんだし
116白馬の玉子 ◆PqSzNbkqDo :2006/04/21(金) 01:33:13 ID:???
>>114, 115

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

がんばってね、109さん。
117115:2006/04/21(金) 21:21:52 ID:???
なんとーーーー!!!(シーブック風味)
式を考えてくれってことだったのかw
SQLServerどころかクエリも関係なかったのかww
釣られた…orz
118NAME IS NULL:2006/04/22(土) 14:24:54 ID:uIJlO8DR
ストアドではなくて、裸のTransact-sqlブロック(begin..endのやつ)のなかで
関数定義することってできないのでしょうか?
OracleのPL/SQLブロックならできるのですが‥
書き込み権限のないDBからデータを拾う開発しているのですが、
ちょっとした処理を関数にまとめたく思っています。
119118:2006/04/22(土) 14:28:09 ID:uIJlO8DR
環境書き忘れました。
DBはSQLServer2000および2005です。
120NAME IS NULL:2006/04/22(土) 15:01:48 ID:uIJlO8DR
ぐぁ。transact-sqlの begin .. end って
スコープを形成しないんでしょうか!?
「変数名 '@i' は既に宣言されています」ってなによ、それ…
(なにかいいやり方ありませんか?)
121NAME IS NULL:2006/04/22(土) 15:57:24 ID:???
exec sp_executesql N'declare @i int 〜'
122120:2006/04/22(土) 16:25:06 ID:uIJlO8DR
>121
サンクスコです。やってみました。スコープ化されました(いちおう)
しかしなぁ…

話は変わりますが、
動的SQLで、テーブル型の変数をOUTPUTすることはできないでしょうか?
実は118=120=私ですが、それができればストアドを使わずに
テーブル変数を返す関数みたいなものができそうです。
123NAME IS NULL:2006/04/22(土) 18:41:19 ID:???
ためしにreturnしてみて
124122:2006/04/22(土) 22:41:13 ID:uIJlO8DR
>123
レスありがとうございます。
いや、Create function権限のないDBなので
関数作れず、そもそもreturnできないのです。
とはいえ特定の手続きを「関数的ななにか」でひとまとめにしたい、と。
そこで苦し紛れに動的SQLを関数とみなし、
OUTPUTパラメータで戻り値(?)を受け取ろうかと思った次第。

一昨日までオラクルやってたので、変数スコープがグローバルだとか
ストアドにしないと関数作れないとか、ショッキングなことが多いです。
SQLServerってこんなにもショボいのでしょうか。
がっくしきてます。。む〜
125NAME IS NULL:2006/04/22(土) 23:17:13 ID:???
table変数が動的SQLに渡せないぽいので、やむなく一時テーブル
(それも#じゃだめで##使わなきゃいけない)使ってまつ。
126NAME 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になるような条件かいときゃおけ。
127kunn:2006/04/23(日) 00:20:01 ID:Q9J4SzPn
ファイルが削除できません
どうすればいいんでしょうか?
128124:2006/04/23(日) 00:30:07 ID:xSEwEA49
一時表もストアドも作成権限のないDBで
なんとかそれをやる方法ってないでしょうか?
裸のtransact-sqlブロック(バッチっていうの?)で関数作りたい、って
それだけのことなんですが…
(*)せめて変数をスコープ分けしたいのだが。。
129NAME IS NULL:2006/04/23(日) 00:57:16 ID:???
>128
ん?一時テーブルもストアドも作成権限がないDBで…ってことは、
プログラム上でスコープ分けたいってこと?
ストアド、ストアドっていってるけど、
ストアドプロシージャのことかストアドファンクションのことか
どっちもなのかもよくわからんようになってきたが…。

そもそも、レスポンスはどーでもいいシステムなの?
そうじゃなきゃ、一時テーブルぐらいは許可してもらえよ。
SQLServer使ってて一時テーブル使わねぇなんてもったいなさ過ぎるよ。
130NAME IS NULL:2006/04/23(日) 01:11:08 ID:???
基本的な質問で申し訳ない
テーブル作成権限ないと、一時テーブルって作れないの?

てか、>>128はストアドの権限もないって
それじゃなにも始まらない気がするんだけど…
131NAME IS NULL:2006/04/23(日) 01:23:43 ID:PR6fh/Ea
>130
えーっとね、たしか、guestでも一時テーブルは作れる。
けど、>128の場合、プログラミング規約上作れないってことじゃなかろうか。
132124:2006/04/23(日) 01:42:41 ID:xSEwEA49
> 129,130,131
どもです。
ええ、他部門がさらに外注に出して納品してもらったシステムのDBで
勝手にオブジェクト作ると保証がなくなるとのことです。
権限的には該当テーブルのみ Grant selectしてもらってるかんじ。
ただ、データだけは拾って簡単な自作のビューアに表示させたいのと
自部門のOracleに転送したいので、、、

>129
ストアドはプロシージャでもファンクションでもどちらでも構わないですが
要は定型処理部分をひとまとめにして箱に入れたいという意味です。
それこそ古いベーシックとかの Go Sub程度の機能でもないよりは、いい。(ローカル変数使えればね)
パフォーマンスはバッチ処理主体なのであんまり求めてないです。
133NAME IS NULL:2006/04/23(日) 01:49:38 ID:???
ストアドではなく、スクリプトファイルを作成し、
isql等から実行したいということ?

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

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

あと、一時プロシージャというものも作れる。
一時プロシージャを使えば何とかなるんじゃないかな。
136NAME 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
137124: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にはそれ相当の機能ってないのかなぁ、って思ったわけです。
一時プロシージャってあるのですね!調べてみます。
138124:2006/04/23(日) 14:37:44 ID:xSEwEA49
>>136, 131
ありがとうございます。一時テーブルってcreate table権限なくても作れるのですね!! 知らなかった!
#tablenameがセッション固有で、##tablenameがトランザクション固有みたいになるのかな?
場所がtempdbに出来るようなので、作れるサイズの最大容量って事前に調べておいたほうがよいのでしょうか?
dropに関しては、同じセッション内では消えないので明示的にdropする。
いずれにせよセッション終了時に自動的に消滅するので後片づけは気にしなくてよい、という理解でよいでしょうか。
ともあれ、値の受け渡しには一時テーブルをつかうのがSQLServerのコンセプトみたいですね!助かりました。
139124:2006/04/23(日) 17:34:43 ID:xSEwEA49
ありがとうございました。一時プロシージャと一時テーブルで
Management Studioからうまくいきました。
が、ADO.NETのSqlDataAdapterは Go を含むクエリを渡すとエラーになってしまうようです。
これは別の方法を考える必要があるのかな。

それと、125さんの記事にもありましたが、
ストアドプロシージャから#の一時テーブルに書き込むのはできなくて
##の一時テーブルならOKなのは仕様なのでしょうか?
with execute as callerとか付けてみましたがあまり関係なしみたい。
ストアドにはセッションIDみたいのが伝わらないってことなのかな?
140NAME IS NULL:2006/04/23(日) 17:53:28 ID:???
ADOとかADO.NET使うなら、GOはいらんぬ。

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

セッションについてはBooksOnlineを読むがよろし。
あと、SQLServerでは
INSERT INTO #一時テーブル
EXEC ストアドプロシージャ
みたいなことができる。利用するがよろし。
141124:2006/04/23(日) 18:17:09 ID:xSEwEA49
>>140
どもです。ADO.NETに関してはSqlDataAdapterではなくてSqlCommandで
GO入れずに個別に実行したらできました。これは私の不勉強です。すんまへんです。
SQLServerは一時テーブルを活用していくのがポイントと思えばよいでしょかね。
もちっとがんばってみます。ありがとうです。
142NAME IS NULL:2006/04/23(日) 18:33:55 ID:???
なんか、めちゃくちゃな素人が、めちゃくちゃ言ってるなー。
オラクルもまともにわかってないんじゃないのか?
143NAME IS NULL:2006/04/23(日) 18:35:28 ID:???
ADO.Netの質問するなら、そっちのスレで聞いてよ。
どうせメンバーは被ってるんだろうけど、
本質的に別の技術だから。
144NAME 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流。
145NAME IS NULL:2006/04/24(月) 03:41:53 ID:BlzOwYBc
連結OLEオブジェクトに.bmpのパスをかいて画像を取り込もうとしてます。mdbでは可能ですが、adpだと動作しません。連結OLEオブジェクトにもってこれないようです。仕様上どうしても取り込む必要があるので頭抱えてます。何かいい方法ありますか?
146NAME IS NULL:2006/04/24(月) 11:33:15 ID:???
T-SQLはバッチではなく、ストアドを使用すれば、
構造化的プログラミングは可能。

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

実際、PL/SQL表の受け渡しについては、
Oracleから外に出力するとき(sqlplusに出力したり、
クライアントプログラムに渡す場合)
にいろいろ手間がかかる。
147NAME IS NULL:2006/04/24(月) 17:25:09 ID:???
>SLECT文の結果セットが返せないので、

SELECT文の〜
148NAME IS NULL:2006/04/25(火) 00:49:23 ID:???
149NAME IS NULL:2006/04/26(水) 11:48:15 ID:???
皆さんの知恵を拝借させてください。

LDFの容量がでかくなりHDD残り領域がかなり無いので、
調整したいのですが、ログ切り離し後、データベース圧縮でOKですか?
それを実行でトランザクションログ領域が圧縮されるのですか?
150NAME IS NULL:2006/04/27(木) 02:53:08 ID:???
>>149
ログのバックアップ後に
データベース圧縮(DBCC SHRINKDATABASE)、もちろんEMからの操作で可。
ログファイルだけピンポイントに圧縮したいならDBCC SHRINKFILEを使う。
151149 ◆v.TAYcWkbs :2006/04/27(木) 13:20:33 ID:???
>>150
指導ありがとうです。
Transact SQLですね?色々試行錯誤してみます。

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

SQLAgentはローカルシステムアカウントで起動されており、プロキシユーザを設定しています。
153NAME IS NULL:2006/04/29(土) 00:15:51 ID:HcJcvsY9
>152
失敗という判断の根拠は?
154NAME IS NULL:2006/04/29(土) 08:40:28 ID:???
質問です。
SQLServerのmdfファイルって、DBMS稼働中はコピーできませんが、
WindowsXPや2003のバックアップを使うと、稼働中でもシャドウコピーを作って、
バックアップしてくれるのでしょうか?
よろしくお願いいたします。
155NAME IS NULL:2006/04/29(土) 10:03:31 ID:HcJcvsY9
>154
なんでntbackupを使うことを思いついて
SQLServerが持っているバックアップ機能を使おうとしないのか
156NAME 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にパッチを当てましたが解決できず悩んでいます。
157NAME IS NULL:2006/05/02(火) 19:49:53 ID:???
>>155
だってベリファイできないじゃん

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

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

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

ちなみに(伝票番号かも,履歴番号っぽい)が主キーです
159NAME IS NULL:2006/05/02(火) 20:24:26 ID:???
日本語でOK
160NAME IS NULL:2006/05/02(火) 23:00:45 ID:???
>>158
履歴レコードに履歴以上の意味がないのなら、アクティブの伝票テーブルと履歴用テーブルを別にする。

次善の策としては最新のレコードは常に履歴番号0番にするなど固定の数字を使う。
この場合は伝票番号+履歴番号は代理キーとして、他に単一の主キーを設定するとよい。
161NAME IS NULL:2006/05/03(水) 00:27:54 ID:???
>>159
>>158に関しては日本語だからよく分からんという噂
162NAME IS NULL:2006/05/03(水) 01:01:08 ID:???
>>160
レスありがとうございます

やっぱりテーブルそのものか履歴番号の定義を変えるかしないと
速くするのは無理なようですね
163NAME IS NULL:2006/05/03(水) 11:17:26 ID:29YU5gFp
MS-Server2005の同時接続数って規定だといくつですか?
164NAME IS NULL:2006/05/03(水) 12:48:38 ID:???
>>163
サーバー構成オプションのuser connectionsなら自動の 0 が規定。
マニュアルで設定する場合はshow advanced options を 1 にする必要有。
165NAME IS NULL:2006/05/03(水) 15:32:24 ID:yjXLVpwU
SQL Server Expressでの質問です

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

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

新しく作ったユーザーでログインするためには他に何をしたらいいでしょう
166NAME IS NULL:2006/05/04(木) 09:05:48 ID:???
>>165
SQLServer認証自体は使えるようにしてあるの?
普通にインストールするとwindows認証しか使えないようになっていたような。
167NAME 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ぐらいでしょうか?


168NAME 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の数値を設定すべし。
169NAME 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抜き法を
171NAME IS NULL:2006/05/07(日) 00:06:18 ID:???
そいつのPCでDOS窓立ち上げてipconfig
172NAME IS NULL:2006/05/07(日) 01:19:55 ID:???
173NAME IS NULL:2006/05/08(月) 14:18:58 ID:???
みんなWebでの帳票印字は何のツールつかってる?

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

あと、それぞれクエリの異なるデータセットを一括して表示して、印刷したい場合にはどうすりゃいいんだろう。
自前でADOで接続し、簡単にDataSetを帳票(のオブジェクト)に渡して表示させる方法があればいいんだけど。
174NAME IS NULL:2006/05/08(月) 19:16:57 ID:???
すいません。
既出かもしれませんが、よろしくお願いします。
今、WindowsMobile5.0のSQLServer 2005に
OLEDBでSQL Serverにアクセスするプログラムを
作っているのですが、OLEDBを理解するために、いいテキストがありましたら教えてください。
アマゾンで検索してみましたが、様々あって、どれがよいかわかりません。
よろしくお願いします。
175NAME IS NULL:2006/05/08(月) 22:13:57 ID:???
MSDN Library。マジおすすめ
176NAME IS NULL:2006/05/09(火) 10:02:21 ID:???
>>175
ありがとうございます。

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

これから読んでみます。

177NAME IS NULL:2006/05/09(火) 17:36:29 ID:Iu/7xhJ7
SQLsv2000の動作確認用に
WinXPpro上でスタンドアロンで動かしたいんですが
できますか?
178NAME IS NULL:2006/05/09(火) 18:23:43 ID:???
できる。つーかしてる。
179NAME IS NULL:2006/05/09(火) 18:57:59 ID:Iu/7xhJ7
>>178
トン

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

検証したいDBのデータ容量が50Gを越えているので
評価版及び開発デベロッパでも無理そうです。
180NAME IS NULL:2006/05/09(火) 20:27:12 ID:???
>>179
>評価版及び開発デベロッパでも無理そうです。
50GBならいけるんじゃねーの。
181NAME 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を評価する必要が無いわけですが
そういうのをうまくやる方法はないでしょうか?

どなたか知恵をお貸し下さい。
182NAME IS NULL:2006/05/09(火) 22:06:07 ID:???
MSDE2000はmdfファイルの上限が2Gだね
183NAME IS NULL:2006/05/09(火) 23:05:26 ID:???
>181
ストアドだろ?なんでWHERE句にこだわるの?

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

END
ELSE
BEGIN

END

じゃダメなのか?
184NAME IS NULL:2006/05/10(水) 08:09:49 ID:???
>>181
col1にインデックスをつける
185NAME 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)
でいいんじゃないかと
186NAME 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

です。

これから読んでみます。
187134: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

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

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

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

>>@var = '' or exists (select * from TABLE1 where col1=@var)
はこの場合はそうですね。
以前逆のようなシチュエーションがあって、その時は
この例でいうところのcol1=''の列があって不具合起こしてしまったので
神経質になっていました。
189NAME 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以上あってしんどいんですが(^^;
明日試してみますね。
191NAME IS NULL:2006/05/12(金) 00:11:12 ID:???
Windows2000が入っているサーバーでSQLServer2000(SP3)を使用した
プログラムを以前作成したのですが、今回そのプログラムを改造するに
当たりサーバーのOSをWindows2003に変更することになりました。
OSが2003に変わってもSQLServer2000は特に問題無く動作しますか?
(勿論どんな処理をやってるかによって変わってくるというのは分かって
いるのですが・・)
192191:2006/05/12(金) 00:14:57 ID:???
>>Windows2000が入っているサーバーでSQLServer2000(SP3)を使用した
>>プログラム
Windows2000の入っているサーバーで動作する、SQLServer2000(SP3)を
データベースとして使用する販売管理のプログラム、です。
言葉がおかしかったので訂正です。
193NAME IS NULL:2006/05/12(金) 03:59:49 ID:???
>>191
Windows2003でSQL Server2000はサポート対象で問題無く動作する。
その販売管理システムがWindows2003で動くかは知らん。
194NAME 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
195191:2006/05/12(金) 07:56:43 ID:???
>>193
>>194
早速の回答、ありがとうございました。
196NAME IS NULL:2006/05/12(金) 14:40:35 ID:???
SQLServer2000(SP4)で、ジョブから空のテキストファイルを
作成したいのですが、どのようにしたらできるのでしょうか?
ActiveXスクリプトでファイルをOPENしてすぐにCLOSEすれば
いいらしいのですがよく理解できませんでした。
197196:2006/05/12(金) 15:04:47 ID:???
自己解決しました。
CreateTextFileオブジェクトでできました。
前に試したときは無理だったと思うのですが何か勘違いをしていたようです。
申し訳ありませんでした。
198NAME IS NULL:2006/05/13(土) 15:25:37 ID:???
Scripting.FileSystemObjectをcreateobjectして
textfileをつくればいいんじゃない
199NAME 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サーバーから検索してどこからでも閲覧できる
ようにしたいのです。

アクセスは少し組んだことがあるんですが、なんせ新しいアプリケーション
がたくさんであるようで合理的で安定的に使える近道はありませんか?
201NAME IS NULL:2006/05/14(日) 11:59:11 ID:???
>200
本屋に行って入門書を5〜10冊買ってくれば?
近道が欲しければ、外注に出せば?
202NAME IS NULL:2006/05/14(日) 11:59:36 ID:???
は?
203初心者:2006/05/14(日) 12:05:27 ID:rD/PlXLV
そんな冷たい・・
どの言語にしたらいいかくらい教えてください。そこからは自分で調べます
から。IIS+Perl とかアパッチ+Perlとかのようにお願いできま
せんか?
204NAME IS NULL:2006/05/14(日) 12:12:41 ID:???
205NAME 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ですか。勉強します。ありがとうございました。
207NAME IS NULL:2006/05/14(日) 12:22:30 ID:???
>>203
何でも好きなのにすれば?
208NAME IS NULL:2006/05/14(日) 12:25:07 ID:???
ちなみに前設計はこのようなものでした。

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

これらのステップ自体、根本的なところから、見直した方が
いいですかね?
209NAME 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 のわずかな間が気になるなら付けとくとよい。
210NAME 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
211NAME IS NULL:2006/05/14(日) 19:48:36 ID:???
どなたか>>199な方はいらっしゃいませんか?
212NAME IS NULL:2006/05/14(日) 19:54:58 ID:???
>>199
全く同じ手順を二つのマシンでやって違いが出るの?

片方ではmdfファイルの自動拡張とかが発生してたりしない?
HDDがフラグりまくってるところでmdfファイルの拡張が発生したりすると
結構ひどい事になるよ
213NAME IS NULL:2006/05/14(日) 19:58:31 ID:???
>>212
データベース作成時はサイズを指定していないので、自動拡張になっていると
思います。ということは、あらかじめサイズを決めれば改善される可能性は
ありってことですね。試してみます。
214205:2006/05/15(月) 00:54:41 ID:/F0thW1i
>>209
アップデートの戻り値を判定するんですね。
ありがとうございました。

後はパフォーマンスの問題ですね。
なんとかがんばってみます。
215NAME IS NULL:2006/05/15(月) 13:50:19 ID:E401pgx5
SQLServer2005 のフルテキストインデックス機能について質問です。

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

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

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

最終的には、"京"や"区松"といった検索文字列でも抽出できるようにしたいのです。
宜しくお願いします。
216NAME IS NULL:2006/05/15(月) 15:01:50 ID:???
>>215
全文検索エンジンというのはそういうもの。
条件に完全に会うものをリストしたいならLIKE句を使うべきだろう。
LIKEで中間一致の場合はパフォーマンスが激しく悪いことを覚悟するべし。
217215:2006/05/15(月) 17:02:38 ID:???
そうですか・・・・orz

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

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

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

確かに *指定は後ろだけみたいだね。
221NAME IS NULL:2006/05/15(月) 21:55:54 ID:???
>>219
どう、んなこたないの?
222215:2006/05/16(火) 14:21:31 ID:???
>>220
そうなんですよね・・・・


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

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

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

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

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

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

  例) Like '%戸川区%'

4.完了!!


(´・ω・`) ぬるっぽい?
223NAME IS NULL:2006/05/16(火) 15:15:23 ID:???
よー考えるワ ^-^;
224215:2006/05/16(火) 20:34:13 ID:???
ちなみに、検索文字列が1文字だけだと、手順3は必要ありません。
恐らく like 中間一致検索を単体で実行するよりも早いんではないかと。
でも、こんな糞な方法なんて出来ればやりたくな〜い・・・・・orz
もっと良い方法ないかな〜

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

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

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

もっとSQLServer2005を調査します。
んで、解らんとこが出てきたら、また質問しに来ます!
ノシ
225NAME IS NULL:2006/05/17(水) 17:14:22 ID:apfAxcdl
Windows2000Server + SQLServer2000.STDで作業をしています。

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

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

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



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

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

テーブル作成も含めて一括作成できるとありがたいです。
228227:2006/05/17(水) 17:58:28 ID:apfAxcdl

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

お騒がせしました&ありがとうございました。
229NAME IS NULL:2006/05/17(水) 22:55:07 ID:???
しかしSELECT INTOだとインデックスは複製されないぞ!
単にデータ退避とかならいいとして、そうじゃなかったら要注意だぜ。
230NAME IS NULL:2006/05/20(土) 09:34:59 ID:Nz3hdX5y
SQLServer2005 って、Windows認証を無効にすることが出来ないですか?
SQLServer認証オンリーの運用だから、無効にしたいんだけど。
BUILTIN\Administratorsログインも無効にしようとしても無駄だったし・・・・・

どうしてOracleのようにWindows認証を無効にすることが出来ないんだよ・・・・
出来る限りセキュリティーホールを埋めたいのにさ。
231NAME IS NULL:2006/05/20(土) 17:42:48 ID:???
SQL Server認証は後方互換のために搭載されてる機能で将来廃止の方向だから
推奨の認証方式である統合認証を削る選択肢は用意されていないと思う。
232NAME IS NULL:2006/05/20(土) 21:25:45 ID:???
>>230
BUILTIN\AdministratorsとBUILTIN\Usersは
ログイン無効には出来なかったが、削除は出来た。なんでだろう。
233NAME 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: ログイン タイムアウトが時間切れになりました。
==================================================================================
234NAME IS NULL:2006/05/21(日) 11:01:37 ID:???
>>233
SQL Server セキュリティ構成でローカル接続のみになってない?
235233:2006/05/21(日) 11:11:35 ID:xV+s6Q50
>>234
いや、両インスタンス共にリモート接続を許可にしてあります。
236NAME IS NULL:2006/05/21(日) 17:39:57 ID:???
>>233
名前つきインスタンスでポートを動的にしてない?
規定のポート(1433だったかな)以外でリモート接続するにはサーバ側で
SQLServer Browserが動いてないと繋がらないはず
237233:2006/05/21(日) 17:56:45 ID:xV+s6Q50
>>236
ありがとうございます!
無事に繋がりました!
感謝感謝!

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

ポートの動的(?)についても調べてみます。ありがと。
ノシ
238NAME IS NULL:2006/05/22(月) 11:11:25 ID:???
T-SQLに全角を半角にする関数は用意されていますでしょうか?
バージョンは2000です。
239NAME IS NULL:2006/05/23(火) 01:58:24 ID:???
Enterprise Managerを使うと、列と列の間に列を作ることが出来ますが、
これをALTER TABLE またはその他なんかのコマンドでやるにはどうしたら
いいですか?
240NAME IS NULL:2006/05/23(火) 09:01:09 ID:???
>239
プロファイラでログとってみたら?
たぶんなかったと思うが
241NAME IS NULL:2006/05/23(火) 11:31:36 ID:???
超ド級の初心者です、Accessは使ってました
SQL Server 2005 Express Editionをインストールしました
サービス(SQL Server(SQLEXPRESS))も開始されてます

・・・

.mdfをどうやったら新規作成できるんですか?
本気でわかりません、ネットでも検索しましたが
「Visual Studio 2005から・・」みたいな解説しか見つかりませんでした
242NAME IS NULL:2006/05/23(火) 11:43:27 ID:???
>>239
無い

EMの裏の処理では、DROPしてからCREATEしてる。
243241:2006/05/23(火) 11:47:23 ID:???
すいません、すげぇバカな質問ですね、スルーしてください
入門書買えっての・・>俺
244NAME IS NULL:2006/05/23(火) 11:52:00 ID:???
>>243
初心者ならば、以下のサイトで勉強することをお勧めする。
とても解り易く記述されてる。

http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/exercises.mspx
245NAME IS NULL:2006/05/23(火) 11:56:31 ID:???
>>241
SQLCMDから CREATE DATABASE userdb で作れる。
VS2005 Express Editionからはいろいろ制約が多くて常設のデータベースは作れない。
246241:2006/05/23(火) 11:59:09 ID:???
>>244-245
親切にありがとうございます、助かります
247NAME IS NULL:2006/05/23(火) 12:02:44 ID:???
いまはSQL Server Management Studio Expressを追加でダウンロードできるからこれ使えば簡単。
248NAME IS NULL:2006/05/23(火) 22:09:41 ID:???
>>242
厳密には
別名でcreate→insert→元テーブルdrop→新テーブルrename
どうでもいいけどねw
249NAME IS NULL:2006/05/24(水) 00:32:59 ID:???
>>242
うえぇ・・・
250242:2006/05/24(水) 02:32:24 ID:???
>>248
うん・・・・その通りっス (´・ω・`)


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

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

初期起動時は300M〜ちょいくらいなのですが、
ちょっと動かしているとメモリが暴暴発して
700M〜1000Mくらいになってしまいます。
このメモリ使用量を適度なサイズに抑えることは
設定で可能なのでしょうか?
252NAME IS NULL:2006/05/24(水) 12:02:57 ID:???
>>251
max server memoryを調整。EMからも設定できる。
ただし2GB以下は自動調整が基本で、700M〜1000Mの数字が妥当な場合もある。
パフォーマンスモニタ等で前後を測定してどちらがパフォーマンスがいいかよく検討すること。
253NAME IS NULL:2006/05/24(水) 13:31:18 ID:XbSlj+YX
>>252
ありがとうございます。
参考にさせていただきます。
254NAME IS NULL:2006/05/25(木) 10:29:50 ID:mhvD28e7
SQLServer2005の参考書って極端に少ないよね・・・・

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

ほかの参考書を真似て書くことができないから
256NAME IS NULL:2006/05/25(木) 20:16:36 ID:???
MSDNが結構充実しているし、
TipsだったらMSMVPな人たちのBlogとかPASSJとか見れば事足りるから
別に参考書ってものも要らないなぁ。
257NAME IS NULL:2006/05/25(木) 21:48:43 ID:???
あるテーブルをロックしつづけているプロセスをぶち殺したいのですが
どのアホがロックしているのか知るにはどうすればよいのでしょうか
ちなみにエンタープライズマネージャーは
エラー1222:テーブルのロック要求がタイムアウトしました
とぬかしてロック情報が一切表示されませんでした
258257:2006/05/25(木) 21:50:45 ID:???
失礼
sql server 2000です
259NAME IS NULL:2006/05/25(木) 23:56:25 ID:???
>>257
sp_lock と sp_who でわかるけど、
EMのロック表示でエラーになるようならこちらもエラーになるかもしれない。
260257:2006/05/26(金) 01:38:59 ID:???
>259
ありがとうございます
やってみます

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

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

むしろEnterprise Managerの方が突然死が多かった。
SQLServer2005beta入れた後はほとんど使い物にならなかったな>EM
263NAME IS NULL:2006/05/27(土) 12:45:18 ID:???
ManagementStudioもEMも落ちたことないな
クライアント側にもちゃんとSP当ててるか?
264NAME IS NULL:2006/05/27(土) 14:30:17 ID:cnUZHQ+0
同じワードで始まる名前のテーブルに一括してアクセス件を与えたいのですが、
なにかいい方法はありませんでしょうか。
GRANT SELECT ON table_* TO hoge
↑みたいなことがしたいのですが、アスタリスクは使えませんよねぇ。
EnterpriseManagerからユーザーまたはロールのプロパティーで
大量のチェックを付けるしかないんでしょうか?
265NAME IS NULL:2006/05/27(土) 22:26:39 ID:???
>>264
sysobjectsを使うのじゃ
266NAME IS NULL:2006/05/28(日) 01:38:35 ID:???
@自分の端末のmanagemment studioからファイル(エクセルとかCSV)をインポートするとき
エラーが出るんだけど、
リモートデスクトップでSQLサーバーが入っている端末にログイン
したmanagemment studioからインポートするとエラーが
出ないんだけど、そういう物なのですか?

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

Aテーブルを作らずにCSVファイルをインポートすると
エラーが出ました。よくよく調べると50バイト以上のデータを
インポートすると出るようです。(これまた)そういう物なのでしょうか?
267NAME IS NULL:2006/05/28(日) 01:47:53 ID:3yfmUsmZ
↑Aですが、補足です。フィールドが50バイト以上です。
268ExcelVBA+MSDEの解説本:2006/05/28(日) 16:29:41 ID:YTgFIkiG
質問させて下さい

ExcelVBAでMSDEを操作してみたいのですが、この二つを連携させた解説本または、この二つの連携を学ぶことのできる解説本をご存知でしたら、教えてください
本屋で探しても
ExcelVBAとAccess
AccessからSQLServer
といった連携の題名の本しかないので、これらの本 では、ExcelVBAとMSDEの連携および操作を学ぶことができなさそうです。
データベースはXOOPS立ち上げのためにMySQLを使った事があるという程度の初級者です
御助言お願いします
269NAME 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/
270NAME IS NULL:2006/05/29(月) 18:14:57 ID:???
ワッフル、ワッフル
271NAME IS NULL:2006/05/29(月) 21:49:57 ID:???
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
でトランザクションかけてる1つのストアドプロシージャを
2つ同時に実行すると1つが
エラー1205 前略デッドロック以下略
でこけやがりました
SQL Server2000って先発のトランザクションが
コミットするかロールバックするまで後発が待機する
ようにするにはどうすればいいのでしょうか
データベースは1こです
272NAME IS NULL:2006/05/30(火) 00:03:17 ID:???
条件によってロックの順番がまちまちだったりしないだろうな
273271:2006/05/30(火) 00:09:16 ID:???
レスありがとうございます

ロックする順番はいつも同じです
途中で何らかのエラーになったら必ずロールバックして処理を終了し
スキップして次にいくことはないです
274NAME 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 のデータベースの保守ができなくなると困るな、と。

やはり別の環境を構築するしかないでしょうか?
275NAME IS NULL:2006/05/30(火) 08:13:38 ID:???
片方をVirtualPCにでも入れとくとか
276NAME IS NULL:2006/05/30(火) 08:45:50 ID:???
>>274
ヒント:互換性レベル
277NAME 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
278NAME 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側の問題かと思っています。

上記が発生する原因と対処方法を御存知の方、アドバイス頂けると幸いです。
279NAME IS NULL:2006/05/30(火) 18:07:18 ID:???
>>278
「2000だと動くけど2005だと動かないプログラムの書き方をしている」
というプログラム側の問題かもしれないじゃん?
プログラムも晒したら?
280NAME IS NULL:2006/05/30(火) 21:04:20 ID:???
>>278
最低でもVB.NETのバージョン、ADO.NETかどうか(SQLClientかOleDBか)、
MDACなどドライバの種類とバージョンぐらい書いとくもんだ。
ここまで書いて思ったが、MDACが古いとかじゃないの?
281NAME IS NULL:2006/05/31(水) 11:42:39 ID:???
MDAC は Native Client に変更になったから注意
282NAME IS NULL:2006/06/01(木) 14:52:26 ID:???
ストアドプロシジャか何かで、SQL Serverが稼働しているPCから見えるネットワークドライブなどを
取得する方法はないでしょうか?
283NAME IS NULL:2006/06/01(木) 17:07:14 ID:jbHKZ6Mc
ODBCでSQLに接続する際の「システムDSNの設定」で
「接続するSQL Server名」でドロップダウンボックスに表示される
過去の履歴を消去する方法をご存知の方がおられましたら教えてください。

よろしくお願いいたします。
284NAME IS NULL:2006/06/01(木) 17:31:32 ID:???
あれは履歴じゃなくて、近所にいるサーバを列挙してるんだと思うが。
285NAME IS NULL:2006/06/01(木) 17:40:52 ID:jbHKZ6Mc
同じサーバ名の重複や、間違えて入力したもの等がいつまでも残ってるんですが・・・
ちなみにIP指定したサーバとPC名で入力したサーバも重複表示されてます。
サーバがおかしいだけ・・・でしょうか?
286NAME IS NULL:2006/06/01(木) 17:49:55 ID:???
それは知らない。
そういうのはどーせレジストリに入ってるんだろうから、「間違えて入力したもの」
をレジストリから全検索すれば。
287NAME IS NULL:2006/06/01(木) 18:07:45 ID:???
>>282
xp_cmdshellでがんがる
288NAME IS NULL:2006/06/01(木) 18:09:12 ID:???
>>282
あとSQLCLRでも出来ると思う。
289NAME IS NULL:2006/06/01(木) 21:37:21 ID:???
だがネットワークドライブはログインユーザが繋いでいるものなので
別ユーザからはどうやっても見れないような気もする
290ExcelVBA+MSDEの解説本:2006/06/01(木) 22:37:58 ID:nF0ivfEo
別の場所に質問します。
こちらでは,場所違いだったようです。
失礼致しました。
291287:2006/06/02(金) 08:11:43 ID:???
>>289
そりゃそうだ
292NAME 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文にも対応可能かどうか。

293NAME IS NULL:2006/06/02(金) 17:21:20 ID:???
>>292
平文のSQLしか受け付けないDBMSのほうが珍しいと思うが、
聞きたいのはミドルウェアでどうするかという話だろう?
ADO.NETなら次を参照。
ttp://msdn2.microsoft.com/ja-JP/library/system.data.sqlclient.sqlcommand.prepare.aspx
294NAME 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
295NAME IS NULL:2006/06/06(火) 22:45:45 ID:???
サーバーとクライアントで言語設定、日付の設定が違うとか・・・
296NAME IS NULL:2006/06/06(火) 22:49:45 ID:???
bcpで使ってるオプションは -n ? -c ? -f ?
297NAME IS NULL:2006/06/06(火) 23:10:39 ID:???
>>295 参考にして、明日 チェックしてみます m(_ _)m
>>296 送り込むサーバには -S オプションを指定しています。
298NAME IS NULL:2006/06/06(火) 23:25:28 ID:???
>>297
-n -c -w -N -f のどれも指定しない場合は毎回フィールドのストレージ型とかプレフィックス長をきいてくるけど
毎回答えてるの?
299NAME 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万件)に削減すれば、正常終了して
インポートされるので…

どうしていいやら、こまりました
300NAME IS NULL:2006/06/06(火) 23:38:04 ID:???
ローカル環境なら、1000,000(一千万)データでもインポートは正常にできます。
データの作成もツールで作成していますので、データの不具合ではない事くらいしか
判別できません。
301NAME IS NULL:2006/06/07(水) 16:03:51 ID:???
 SQL Server 2000 の UNIQUE INDEX って、JET と違って 2行以上に NULL が
含まれると制約に違反しているとか言ってくるけど、
「NULL は許可して、NULL 以外の行に重複が出ないようにする」
という要求を満たすことをみんなどうやって実現しているのカナ?カナ?
302NAME 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
303NAME 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していた
場合に数値がずれてしまいます。
上手く取得する方法はないでしょうか?

オラクルだとシーケンスは別定義なので問題ないのですが。
304NAME IS NULL:2006/06/08(木) 17:31:01 ID:???
SCOPE_IDENTITY()
305303:2006/06/08(木) 17:43:01 ID:???
>304
ありがとうございます。
助かりました。
306NAME IS NULL:2006/06/09(金) 11:53:50 ID:???
データベース保守計画で作成したジョブをコピーしたいのですが
いい方法はありますか?
同じ内容でデータベースが違うジョブをプログラム上でコピーして
作成するのが目的です。
307NAME 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のままです。
ログを見てみたのですが一番最後が「構成は正しく更新されました」と
いうようなメッセージが出力されています。


どうやれば上手くいくかご存知の方、宜しくお願いします。
308307:2006/06/16(金) 23:33:06 ID:???
MSDE2000でOSはXpのSP3です。
309NAME IS NULL:2006/06/17(土) 00:53:20 ID:???
>>308
XPのSP3っていつ出たの?
310307:2006/06/17(土) 01:36:35 ID:???
>>309
失礼、SP2です
311NAME IS NULL:2006/06/17(土) 07:12:08 ID:???
対話型でセットアップしたらうまくいく?
あとはSP4からsa のパスワード無しは許可しなくなったからその辺の影響とか。
312307:2006/06/17(土) 08:38:51 ID:???
>>311
対話型は試してないのです。
お客さんがバッチ実行するだけでインストールできるように
しとかないといけないので・・。
よく分かってないのですが、sp3の状態でsaにパスワードを
つけて(どうやって?)
UPGRADEUSER=sa
UPGRADEPWD=saのパスワード /L*v C:\MSDELog.log
として実行すればOKということでしょうか?

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

osql -U sa
sp_password @old = null, @new = 'complexpwd', @loginame ='sa'
314NAME IS NULL:2006/06/17(土) 12:13:03 ID:???
かなり前にSP4あてたので記憶が曖昧だが…
マイクロソフトからダウンロードしたファイルはアーカイブファイルなので
Cドライブの直下に解凍されたフォルダがある。解凍後のフォルダにあるsetupを実行してみたら?
まと外れだったらスマン。
315307:2006/06/20(火) 00:08:27 ID:???
>>311
>>314
どうもありがとうございました。
saパスワードを付与してから実行したところ、ちゃんとSP4に
アップグレードされました。


BLANKSAPWDのオプションが効かないのなら、そういう
メッセージを出してくれればいいのに・・。
316NAME 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ってどうすればできますか?
317NAME 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

こういうサブクエリ作ってさらに結合するしかないかな
318NAME IS NULL:2006/06/20(火) 21:32:46 ID:et/C7JSy
ん?違うかな?「同一キーでSUM」の「同一キー」はどこまでだ?
319NAME IS NULL:2006/06/20(火) 21:34:38 ID:UnuZbu+v
>>317
教えていただき、ありがとうございます。
このテーブルは1千万件データが入っているのですが
結構時間がかかりますよね。
本当の処理ではこのSELECTで抽出されて結果と約1億件データが
入っているテーブルとを比較して同一キーがあればSELECTした項目A
を加算、項目BをUPDATEしなければなりません。
ここまでの処理を1時間で終わらせる事ができるか心配です。
320NAME IS NULL:2006/06/20(火) 21:36:00 ID:UnuZbu+v
>>318
ここでの同一キーはキー1,キー2です。
紛らわして申し訳ありません。
321317,318:2006/06/20(火) 22:10:10 ID:et/C7JSy
うーん。なるほど。普段小さいシステムばっかりだから、1千万件ものデータを
扱ったことはないなあ。
322NAME IS NULL:2006/06/21(水) 15:35:59 ID:WnpBQn4q
今、自分がいる環境では何という種類のSQL Server
が動いているのかをチェックする方法ってありませんか?
323NAME IS NULL:2006/06/21(水) 15:57:39 ID:???
>>322
SELECT @@VERSION
324NAME IS NULL:2006/06/21(水) 17:59:42 ID:???
SQL Server2005 Expressはデータベースの
容量が4GBに制限されているようですが、
現在データベースが何B使っているかを
調べるにはどうすればよいでしょうか?
325NAME IS NULL:2006/06/21(水) 18:24:10 ID:???
>>324
FILE_NAME 関数と FILEPROPERTY 関数
326NAME IS NULL:2006/06/21(水) 21:27:25 ID:???
sysdatabaseって手もあるでよ
327NAME IS NULL:2006/06/25(日) 23:54:41 ID:UBvWo12k
現在大規模なデータを取り扱う開発をしています。
9000万件のデータと500万件のデータをJOINし、空っぽのテーブルに
INSERTしています。
INSERT処理自体は30分以内でCOMMITまで実行Sれているようなのですが、
この処理を行うとEnterprise Manageやクエリアナライザなども固まってしまい
困っています。サーバはかなり良いスペック(CPU、ディスクなど)で問題ないかと
思うのですがSQLServerがこの処理についてこれないのでしょうか?
328NAME IS NULL:2006/06/26(月) 09:25:26 ID:???
>>327
重そうな処理ではあるが完全に固まるようならDISKの構成が悪いとかないかな。
たとえばグループも分けずにRAID5の巨大な仮想ディスクを1つを作って、
そこにOSやらスワップやらDBファイル、ログファイルを全部ぶち込んだらIOネックで動かなくなる。
329NAME IS NULL:2006/06/26(月) 20:28:44 ID:???
しかし、SQL Serverってクソだよな。
offset つかえねーし。topでなんとかやろうにもかなり苦労する。
保守性が悪くなってしゃーないわこのクソが。マジきれそう。
330NAME IS NULL:2006/06/26(月) 20:52:11 ID:???
offsetが使えないだけでクソと言い切れる程保守性が悪くなるだろうか
331NAME IS NULL:2006/06/26(月) 20:57:04 ID:???
>>330
いやさ、ページ遷移を作る時にWhere句が多い場合、topで絞りこむと
Query文が見づらくなるんだわ。
offsetまではいかないまでも、Oracleみたいにnumrowsレベルでもいいから、もっと簡単な裏道がほしかった。
332NAME IS NULL:2006/06/26(月) 20:57:38 ID:???
すまん。俺は日本語がクソだが。荒らし気味になってスマソ。
333NAME IS NULL:2006/06/26(月) 21:49:57 ID:0i/5G9VY
>329
ストアドプロシージャ使えばいいじゃん。
一時テーブル+IDENTITY 使えばよ。
334NAME IS NULL:2006/06/27(火) 14:44:02 ID:???
演算にエイリアスを使う方法はないんですか?
SELECT aho AS A , hoge AS B , A+B AS C FROM fuga;
みたいに。
335NAME 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
あんまり意味ないな。
336NAME IS NULL:2006/06/27(火) 15:40:32 ID:???
335
ありがとうございます!
ACCESSなら直接エイリアスを使えたのに、SQLSERVERだと使えなくて困っていました。
337NAME IS NULL:2006/06/28(水) 16:01:54 ID:???
初歩的な質問で失礼します。
今回初めてSQL Serverを使うのですが、
Money型って使って何かメリットありますか?
ちなみにバージョンは2005です
338NAME IS NULL:2006/06/28(水) 17:01:07 ID:???
>>337
高精度、小領域。
とりあえず判らない時は BOL(Books Online) を開くクセを付けると良いよ。
339337:2006/06/28(水) 18:01:19 ID:???
>>338

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

続いて質問で申し訳ないですが、
メリットはそれだけでしょうか?
逆にデメリットのようなものはあるのでしょうか。
340NAME IS NULL:2006/06/29(木) 19:19:39 ID:???
小数点の長い計算が出来ない

小数点以下で精度を求められるときびしい
341NAME IS NULL:2006/06/30(金) 12:05:05 ID:???
データサイズが大きくなりすぎたので、該当すると思われるテーブルを
削除したのですが、一向にサイズは小さくなりません。
他にどんなアクションが必要になるのでしょうか?
初歩的な質問ですいません。。
342NAME IS NULL:2006/06/30(金) 12:55:13 ID:???
>>341
DBCC SHRINKDATABASE
343341:2006/06/30(金) 13:19:20 ID:???
>>342
ありがとうございます!
解決できました。
344344: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 つけるのはアレすぎるので、だれか回避の方法を
知っていたら教えてください…
345NAME IS NULL:2006/06/30(金) 23:59:35 ID:???
>>344
saで実行。
346NAME IS NULL:2006/07/01(土) 10:57:19 ID:60RgFSxW
SQLServerってデッドロックよく発生しませんか?
ただ単に俺がアフォなだけ?
特にクラスタ構成だとデッドロックが発生しやすいって聞きましたがマジっすか?
SQLServer2000です。

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

クラスタリングに関しては聞いたことが無いけど、SQLサーバーのフェイルセーフクラスタリングのことなら
基本的には片方は待機してるだけだからデットロックが増えることは考えにくい。
348NAME IS NULL:2006/07/01(土) 11:37:25 ID:???
>>347
訂正 フェイルオーバークラスタリング

別のトランザクションがデータを更新したことによるトランザクションの失敗というのは
SQL Serverのクライアントカーソルもしくはサーバーカーソルなどで楽観的排他を使ったときと、
OracleでSerializableトランザクションを使ったとき起きる。
349344:2006/07/01(土) 13:35:24 ID:???
>345
Σ(゚Д゚ )そいつは名案気がつかなかった早速帰ってやってみよーッと!!
350NAME 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以外でテーブルの値を変数に代入する方法は無いでしょうか?
351NAME IS NULL:2006/07/01(土) 16:29:32 ID:???
>>350
SET @intLEVEL =  (SELECT LEVEL FROM M_USER WHERE ID = @intID) 
352350:2006/07/01(土) 16:53:18 ID:???
>>351
サンクス

帰ったら早速試して見ます。
353NAME IS NULL:2006/07/02(日) 16:45:19 ID:LR878fe9
>>346
>みんなデッドロックが発生しないように気をつけてることって何ですか。
>テーブル更新順序はきちんと決めてますか?どんなルールで決めてます?
俺も気になるんだが、ルールってあるの?
354NAME IS NULL:2006/07/02(日) 17:40:29 ID:???
同じ呼び出し順で。
355NAME IS NULL:2006/07/02(日) 22:08:27 ID:zA3BgFa9
SQL Server 2000で、
「現在のトランザクションのトランザクションID」
(=トランザクションごとに一意な識別子)
を取得することはできませんか?

SQL Server 2005だと sys.dm_tran_current_transactionビューを利用できるのですが、
2000ではそれに準じるものを見つけられませんでした
356NAME IS NULL:2006/07/02(日) 23:12:28 ID:???
MSDE 2000のデータをSQL Server 2005 Express にコンバートしたいのですが、手順がわかりません。
MSDE でBackupしてSQL Server 2005 ExpressでRestoreしてみたのですがだめでした。

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

ご教授おねがいいたします。
357NAME IS NULL:2006/07/02(日) 23:36:46 ID:???
>>356
SQLServer2000互換のデータベース作成してそこに同じテーブルつくってやっても駄目?
358NAME 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できる権限です。。。
361NAME IS NULL:2006/07/03(月) 10:18:27 ID:XoYZ+VD3
トランザクションがcommitされた直後に
あるストアドプロシージャを走らせたいのですが、
なにかうまい手はないでしょうか?
SQL Server 2005
362344:2006/07/03(月) 11:54:39 ID:???
>345
 Windows 統合認証を使う方針なので、sa 案は却下ですた。

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

 起動時に tempdb の権限をうまく書き換える方法や、それ以外の方法で
Access 2003 のフォームからレコードセットを更新可能にするうまい方法を
ご存知でしたら、ぜひ教えてください。
363NAME IS NULL:2006/07/03(月) 12:44:55 ID:???
>357
>358

ありがとうございます。

今回は、MSDE、SQL Server 2005を両方インストールして、
Management Studio
にて、バックアップ→復元でうまくいきました。
364NAME IS NULL:2006/07/05(水) 00:08:11 ID:???
SQL Server 2000 のトリガで、レコードが INSERT, UPDATE, DELETE された時
よりも細かく、たとえば、あるテーブルのあるフィールドが UPDATE された時、
などのようにレコード単位ではなく、フィールド単位にトリガの起動を
行なう事はできますか?
365NAME IS NULL:2006/07/05(水) 03:50:17 ID:???
>>364
直接その機能は無いので、代わりにUPDATE()関数を使って判定。
IF (UPDATE(col1) OR UPDATE (col2))
BEGIN
 処理
END
366NAME IS NULL:2006/07/05(水) 17:14:12 ID:???
sql server2000+windows2000serverで
あるテーブルがいつどんなSQL文でどういうロックがかけられていつロック解除されたのか
ログをとりたいのですが、どうやればいいのでしょうか
367NAME IS NULL:2006/07/05(水) 21:14:49 ID:???
処理に書き出す文をそのつど追加すればいい
368NAME IS NULL:2006/07/05(水) 22:15:13 ID:???
>366
SQLプロファイラでドウヨ

でもどのテーブルに、は出なかったっけかな
369NAME IS NULL:2006/07/05(水) 22:30:53 ID:???
>>368
レスありがとうございます

プロファイラも検討したのですが、
いつロック解除されたのかがわからないのと
ロックが行ロックとか共有とかが多分わからないので
欲しい情報が手に入らないです。
370NAME IS NULL:2006/07/10(月) 11:15:42 ID:y5JykUEH
>>362(>>344)
tempdbは起動時に再作成されるから、ユーザは初期化される。

従ってmodelデータベースにAccess
で使用するログインIDをb_owner権限で作成すれば良い。
371NAME IS NULL:2006/07/10(月) 11:16:19 ID:???
s/ログインIDをb_owner/ログインIDをdb_owner
372NAME IS NULL:2006/07/10(月) 11:24:08 ID:???
>>362(>>344)
ただし、modelデータベースに作成されたdbオブジェクトは、
新規DBを作成した場合、一緒にそのDBに作成されるから、
必要でないユーザはドロップしなければならない。
373NAME IS NULL:2006/07/10(月) 16:22:26 ID:irmUM/Og
SQL Server Management Studio Express でアカウントの追加や設定、削除を行っていたところ、
「ユーザー’サーバー名\ログイン名’はログインできません」となってログインすることすらできなくなりました。
Visual Studio 2005 のほうでも「規定のデータベースにアクセスできませんでした」となって、
データベースさえ開くことができなくなりました。
どうすればログインできるようになるのでしょうか??
あと、SQL Server 2005 のアカウントの設定が難しいのでアカウントの設定方法などの説明している
ホームページがあるのなら教えてほしいのです><
374NAME IS NULL:2006/07/11(火) 00:14:13 ID:???
どなたかご存知の方がいらしたら情報ください。

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

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

同じようなエラーに遭遇した方、いらっしゃいますでしょうか。
解決法御座いましたら指南お願いいたします。
375344:2006/07/11(火) 09:58:16 ID:???
>370,372
 やはり model に権限つけておくしかないでしょうかね…。 >372 にあるように
その後 create した DB にも権限が引き継がれてしまうのを嫌っていました。
 しかし、これ以上 DB を増やすことも当面無いだろうし、他のユーザに
create database 権限を与えているわけでもないので、とりあえず
model に db_owner で追加しておくやり方で考えます。ありがとうございました。
376NAME 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

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

今は念のため全部テキスト(SQL命令文、ほとんど insert 文)
にダンプしているんですが、ちょっと面倒くさい。
379NAME IS NULL:2006/07/19(水) 12:05:03 ID:???
>>378
ファイルが残っているなら大抵アタッチすれば使える。
実際にやるときはアンインストール前にデタッチして別の場所にコピーしておいたほうが安全。
dbo以外のユーザーを使っているならその辺の再設定は必要。
380NAME IS NULL:2006/07/19(水) 19:28:49 ID:Q3VImW7n
SQLServer2005を使用してます。

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

メモ帳や秀丸などのエディタでも、ログファイルの内容を確認したいのです。
381NAME IS NULL:2006/07/20(木) 11:49:44 ID:oOcpS5y7
MySQLのReplaceみたいにデータがあるときはUPDATE、データがないときはINSERTになる命令は
MSSQLSERVER2000にはないのでしょうか?
調べてみるとRESTOREでファイルの復元が〜という今回やりたいこととは違うものしか載ってないです。
382NAME IS NULL:2006/07/20(木) 15:21:52 ID:???
>>381
>>205,209-210
383NAME IS NULL:2006/07/20(木) 20:10:37 ID:???
ローカル環境で小規模DBを構築しています。
テーブル自体の数は少ないのですが、データを18万件近く空テーブルに追加しないといけません。
テキストファイルから、データをインポートしたときはうまくいったのですが、
そのテーブルをフォーマット変換しながら別のテーブルに全件追加しようとすると処理が3時間かかっても全然終わりません。

ローカルに環境を作った時点でまちがっていたのかなあ…
単純に全件追加したいだけなんですけど。
384NAME IS NULL:2006/07/20(木) 20:29:21 ID:???
>>383
肝心なことを書いてないから、やり方が悪いとしかいえない。
その処理のためにどんなツールや言語を使ってるのかな?それともSQLだけで処理してる?
385NAME IS NULL:2006/07/20(木) 20:48:26 ID:???
>383
384にほぼ同意だけど、INDEXやTRIGGER作ってるなら、一旦消してから
あとでINDEX作るなりTRIGGERに対応する処理するなりしたほうがいいぞとだけ言っておく。
クエリアナライザ上で流してるなら、どこでコストかかってっか調べてみれ。
386NAME 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

となるのですが、これよりスマートな方法で意図する通りソートできませんか?
387NAME 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式を弄繰り回すより
こっちの方が何やってるかがわかりやすい場合もある。
388NAME IS NULL:2006/07/21(金) 09:05:00 ID:???
>>387
テーブル作るって手があったんですね、ありがとうございます。
てかIDENTITY列ってこうやって追加できたんだ…。
389NAME IS NULL:2006/07/21(金) 13:06:03 ID:Dn6RIwww
>>386

SELECT ID FROM foo ORDER BY ISNULL(id, 9999)
390NAME IS NULL:2006/07/21(金) 15:09:56 ID:???
   1
   2
   3
   :
9998
(null)
(null)
(null)
9999
391NAME 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))
392NAME IS NULL:2006/07/21(金) 16:20:22 ID:Dn6RIwww
>>390
ワロタ
393NAME IS NULL:2006/07/21(金) 20:42:48 ID:???
>391
なんかもう、やけくそやなw
ID NUMBER(4,0) で、すでに 9999 が入ってたら、
オーバーフローのエラーでこけるぞw
394NAME 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
395NAME IS NULL:2006/07/21(金) 22:20:52 ID:O1DoGmnz
特にSQLServerをシャットダウンせずにWindowsをシャットダウンしても
SQLServerは正常にシャットダウンされますか?
396NAME IS NULL:2006/07/21(金) 23:08:10 ID:???
>394
出力フィールドが増えてるがなw

>395
Windowsのシャットダウンの仕方による。
397394:2006/07/22(土) 08:56:34 ID:???
>>396
フィールド削りたいなら、selectで囲みなさい。
つか、そこまで書かないとわかんないのかー
398NAME IS NULL:2006/07/22(土) 10:09:10 ID:???
>397
わかるけどさ、プラン見たら、へこむよ。
399NAME IS NULL:2006/07/22(土) 14:17:53 ID:???
>>398
サブクエリを使ってもフィールドを減らすぐらいでプランはそんなに変わらない。
この程度でいちいち中間テーブルを作ったりはしないと思う。
むしろやばいのはこの辺じゃね? is null つかえよ〜〜
where ID <> null  where ID = null 
400NAME IS NULL:2006/07/22(土) 14:19:41 ID:???
>399
'is null' と '= null' って動き違うのん?
教えておくれ。
401NAME 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になる。
402NAME IS NULL:2006/07/22(土) 16:12:13 ID:???
>401
へぇー!勉強になったよ、ありがとう。
Is Nullしか書いたことないけどさ、正しい選択だったみたいだねー。
403NAME IS NULL:2006/07/23(日) 12:21:08 ID:???
たまたま
404NAME IS NULL:2006/07/23(日) 16:07:04 ID:???
便所質問
SQLserverで長さ0の文字列は、NULL扱いになるの?
405NAME IS NULL:2006/07/23(日) 18:13:31 ID:???
>>404
なんないよ
406NAME IS NULL:2006/07/23(日) 19:35:17 ID:???
ふーん
OracleはNULLになるけどね。
407NAME IS NULL:2006/07/23(日) 20:19:49 ID:???
>406
Oracleは長さ0の文字列 is NULLでもtrueにしちゃうだけで、
カラムにデータを入れるときは長さ0の文字列とNULLは不思議と別扱いになってるんだよ。
別扱いにしてるのなら、ちゃんと比較式でも別扱いにすればいいのにね。
408NAME IS NULL:2006/07/23(日) 21:30:58 ID:???
>>407
9iで試してみたけど、
’’で代入したデータはNULLで扱われるよ。
NULLで扱われるから、=’’は真にならない。

移行組みは気を付けんとはまるねw
409NAME 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以外で出来るんだったらそれでもいいです。
410NAME IS NULL:2006/07/24(月) 14:01:28 ID:???
SQL Serverで、削除されたデータ領域の最適化ってどうやるんでしょう?
PostgreSQLでのVACUUMみたいなことをやりたいのですが。
411NAME IS NULL:2006/07/24(月) 14:35:06 ID:???
>>410
レコードは8Kのページ、8ページのエクステントといった固定の単位で管理をしていて、
空きページの再利用は自動で行われる。このためVACUUMは不要。
反面、固定長のページ管理なのでページサイズを超えるレコードの扱いに制限が出たり、
レコードサイズによっては無駄な領域が出来てしまう。
索引の断片化の解消なら DBCC DBREINDEX か ALTER INDEX REBUILD
未使用の領域をOSに返すなら DBCC SHRINKDATABASE (断片化の解消にはならない)
412NAME IS NULL:2006/07/24(月) 17:36:57 ID:???
>>411
レスありがとうございます。
戴いた情報でググってみます。
413NAME IS NULL:2006/07/24(月) 21:10:11 ID:???
>409
???
やりたいコトは、クライアント側でデータをテキストファイルに落としたいってことだよな?
お前さんの書いていることは、一時ビューを思いつくのに一時テーブルを思いつけないとか、
エラー処理の書き方がわからないとか、そんな風にしか見えないんだけど?
414NAME 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の得点
という感じです。
415414: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

このように記録されています。
416NAME 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
417415: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です
418416: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
419415:2006/07/25(火) 16:38:51 ID:wEpeM7PJ
>>417
現状のほうはBさんの行にAさんの成績が入っちゃってます。
(後に続くCさんの成績もAさんの成績になってる)
やりたいことはAさんの行にはAさんの成績、
Bさんの行にはBさんの成績、といった具合です。

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

書いてもらったSQLでやってみたら列のプレフィックスがテーブル名と一致しないかクエリ内の別名と
一致しないと怒られました。
420NAME 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だけど。
421NAME 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.実施テスト
422415: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が怪しいとおもって隔離していっかいアンスコしてまたやばいかもっとおもってシステム復元したら、戻らなくなりました。
毎回起動時に×で英語で警告が出ます。
これって個人用パソコンにも必要なんですか?削除していいですか?
おかしくなったんでとりあえずインストールしなおそうと思ってもどれがいいかわかりません。
どなたか教えてくださいペコリ

424NAME IS NULL:2006/07/26(水) 22:48:51 ID:???
>>423
他逝って下さいペコリ
425NAME IS NULL:2006/07/26(水) 23:23:52 ID:???
max server memoryを設定しても、タスクマネージャーで
見ると平気で20MBくらいオーバーしてしまう・・・

なぜ?
426NAME IS NULL:2006/07/27(木) 05:09:49 ID:???
>>425
max server memoryはバッファプールのサイズを指定するものなので、
ロードされたプログラムのコードやスタックのサイズは含まれない。
タスクマネージャのそれは全部含む。
427NAME IS NULL:2006/07/27(木) 07:31:01 ID:???
>>426
なるほど!ありがとうございました。
428NAME IS NULL:2006/07/27(木) 10:38:24 ID:el+8cIsB
便乗質問ですが、

min server memory を指定しても、タスクマネージャ上ではそれを下回るメモリしか占有してないのですが、
これは理由がありますか?
429NAME IS NULL:2006/07/27(木) 16:47:56 ID:WVGB03MI
AVG関数を使って計算をした結果なのですが、小数点第1位までの答えがほしくて
round(avg(mofu),1)としたのですが、42.25になるところが42になっていました(42.3に
なっててほしい)のですがいい方法はないでしょうか?
430NAME IS NULL:2006/07/27(木) 19:23:51 ID:???
>>429
mofuのデータ型は何?整数や実数型ならキャストしないとうまくいかない。
select round(avg(cast(mofu as decimal(5,3))),1) from xx
431NAME IS NULL:2006/07/27(木) 22:58:36 ID:W14bb2rh
ビューにインデックスを付けることは可能でしょうか?
調べたところ、エンタープライズでしかできないとか製品ページに書いてありました。
ですが、マネジメントスタジオかビューのフォルダを見るとインデックスというフォルダが
ぶら下がっています。

あと、インデックスを張ったテーブルで構成されたビューにはテーブルで張ったインデックスの
効果はあるのでしょうか?
432NAME IS NULL:2006/07/27(木) 23:18:16 ID:???
インデックスのある列で結合してれば、効果あるんでね?
433NAME IS NULL:2006/07/28(金) 11:50:06 ID:wPjT255z
>>431
バージョンは何? 2005として答える。

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


>あと、インデックスを張ったテーブルで構成されたビューにはテーブルで張ったインデックスの効果はあるのでしょうか?
基本的にはインデックスを使ってくれる。
ただ、複雑な構文のSQL文だと使ってくれない場合もある。
Management Studio(旧Enterprise Manager) で実行計画を確かめて。
434NAME IS NULL:2006/07/29(土) 21:17:53 ID:???
テーブル、関数、ストアドの所有者は dbo にするのと
アプリ用に作ったユーザのどっちにするのが一般的ですか?
435NAME 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・・とはどんな機能なんでしょう?
436NAME IS NULL:2006/07/30(日) 00:42:06 ID:???
>>435
どのエディションでもインデックス付きビューを作ることは出来るし、
元になるテーブルが更新された場合は索引は更新される。
Enterprise以外のエディションで、インデックス付きビューに対して問い合わせをした場合は
普通のViewとして処理され、ビューにつけたインデックスは使われない。
>>433 の言ってることは最後の一行以外は賛同できない。
437433: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
439NAME IS NULL:2006/07/31(月) 21:54:33 ID:???
>>437
それはちょっと引用が足りてないな。
>また、インデックス付きビューのコンテンツを照会する場合は、ビューの参照に NOEXPAND ヒントを使用する必要があります。
この部分が重要。

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

マッチングの部分は英語版で見てもマッチングと表記がある上、他のページではこの用語を使っている箇所
は見つからなかったので、ここのMS自身の説明があいまいなのだと思う。
俺的にはこのマッチングしないは、オプティマイザがプランを立てる上でインデックス付きビューを
探し当てる(マッチングする)ことをサポートしていないという意味で捉えている。
440NAME IS NULL:2006/07/31(月) 22:32:33 ID:???
高位バージョンとの差別化のために機能を封印してみたが抜け道が残ったといった感じだな
441NAME IS NULL:2006/08/02(水) 16:41:56 ID:???
どっかのバッチ処理で見つけた

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

もうね、アホかと
442NAME IS NULL:2006/08/02(水) 21:41:11 ID:???
>441
ワロスw
443441:2006/08/03(木) 08:43:26 ID:???
おっと失礼
×@@rowcunt
○@@rowcount
444NAME IS NULL:2006/08/03(木) 16:30:56 ID:5KiJik6U
PASSJ ってやる気が無いよな。

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

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

PASSJのスタッフは、Oracle案件の仕事で手が離せなくなったのかな。
445NAME IS NULL:2006/08/03(木) 20:00:34 ID:???
>444
若いスタッフが育たない&若い回答者も育ってない。
年寄りばっかり頑張って息切れしているユーザーズグループってどうよ?
446NAME IS NULL:2006/08/04(金) 03:52:13 ID:x+YaY64N
セメスターで前期シルバー、後期ゴールドな講義って無茶?
447NAME IS NULL:2006/08/04(金) 10:03:13 ID:/AbN/Vig
accessからsqlserverとリンクしているのですが、
接続を切らない場合があるようです。

sqlserver側で接続を強制的に切断する方法はありますでしょうか?
448NAME IS NULL:2006/08/04(金) 11:54:31 ID:/AbN/Vig
判った「kill spid」だ
spidはsp_whoで求める
449NAME IS NULL:2006/08/04(金) 21:28:49 ID:???
だって2005、まだSP1も出てないじゃん
450NAME IS NULL:2006/08/04(金) 21:33:52 ID:???
工エエェェ(´д`)ェェエエ工
451NAME 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

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

452NAME IS NULL:2006/08/07(月) 09:32:16 ID:???
まあ、OracleもWindows版に限っては、対象OSの範囲が狭いけどな。
おそらく、Windows2007ではOracle9iは切り捨てられるだろう。
453NAME IS NULL:2006/08/07(月) 13:23:27 ID:???
>>451
まるでOSには安定度や信頼性が必要ないようなレスに見えるぞ
データベースの乗り換えにそこまで慎重になるのなら
OSの乗り換えも長期的にかまえて慎重に行けって
454NAME IS NULL:2006/08/07(月) 14:10:41 ID:???
455NAME IS NULL:2006/08/07(月) 15:14:45 ID:CL09duAY
>>453
メーカー製のPCサーバーを使い続けて、保守部品の入手が困難になって
しかたなくリプレイスしたときに、今使っているWindows2000/2003が
新しいサーバーではドライバ等の提供が無く動かないときに、
次期Windows上でも、SQL Server 2000 が動いてくれないと
困るっていう意味です。

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

もちろん、古い今の環境を使い続けるつもりなんだけどね
456NAME 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はコアライセンスで、うちはプロセッサーライセンスや。
お得やろ〜?
458NAME IS NULL:2006/08/07(月) 18:08:10 ID:???
SQLServer2005が出たのは、2005年の12月頃。
あれから8ヶ月以上も経過してるのに、本屋にマニュアルがほとんど無いのはどういうことだろうか。

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

いまいち盛り上がりに欠ける。
DBマガジンでも、Oracle10gの時と比べて扱いが非常に小さい気がする。
459NAME IS NULL:2006/08/07(月) 18:55:28 ID:???
>>451
MSの広告塔じゃん。

PASSJのスポンサー
http://www.sqlpassj.org/info/sponsor/default.aspx
460NAME IS NULL:2006/08/08(火) 09:47:19 ID:???
>>458
Windows Developer Magazine(ttp://www.shoeisha.com/mag/windev/)
のほうが.NET絡みで扱いが大きいな。実際に情報量はここが一番大きいのではないかと思う。
461NAME 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のエラーとしか出てきません。
調べてみましたが、私の力量では発見できませんでした。

対応方法とかご存知でしたら教えていただければ助かります。
よろしくお願いします。
462NAME IS NULL:2006/08/08(火) 18:06:45 ID:v9aD+4hx
>>461
シングルユーザモードは、「SQLServer Configuration Manager」ツール の
SQL Server(MSSQLSERVER) サービスのプロパティ値を変更しないといけない。


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


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

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

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

どうもありがとうございました。
464NAME IS NULL:2006/08/08(火) 18:35:03 ID:???
>>463
sqlservrで立ち上げるとコマンドプロンプトで動きっぱなしになり、とめる時は Ctrl-C でとめる。
戻ってこないのは正常な動作。
465NAME IS NULL:2006/08/08(火) 18:40:42 ID:???
>>358
亀レスかつ横レスだが、ほぼ同じ問題で悩んでたんで超助かった。
目から鱗だ。おまいは神だ。ありがとう。
466NAME 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" でシングルユーザモードになったぞ?
467461:2006/08/08(火) 18:45:14 ID:???
>>464
なるほど、戻らないのは正常動作なんですね

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

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


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

移行方法また考えないと・・・・・・。
468NAME IS NULL:2006/08/09(水) 19:52:24 ID:???
うーむ

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

漏れ的には
はぁ?
ビルゲイツのつくったもんに信頼性?
てノリ
469NAME IS NULL:2006/08/09(水) 20:46:17 ID:???
>>413
どう見てもあなたが偉そうです。
ありがとうございました。
470NAME IS NULL:2006/08/09(水) 21:55:56 ID:???
>>468
どうみても夏厨です
本当にありがとうございました
471NAME IS NULL:2006/08/09(水) 23:33:10 ID:???
>>470
うむ、
飛行機に乗る機会のない喪前には
何の関わりもない話だな
472NAME IS NULL:2006/08/10(木) 09:50:43 ID:G4V9JOjZ
テスト飛行時にビルゲイシを飛行機に括りつけて飛ばせば良いんじゃね?
473NAME IS NULL:2006/08/10(木) 10:31:35 ID:???
ビルゲイツはWindows98のプレゼンで
ブルースクリーンを見せびらかしてたもんな

もうね、アホかと
474NAME IS NULL:2006/08/10(木) 15:06:51 ID:???
SQL Server 2005 Expressを使っています。
bcpでフォーマットファイル、テキストファイルを作成しました。
このフォーマットファイルを使って、テーブルの新規作成はできますか?
475NAME IS NULL:2006/08/10(木) 16:39:56 ID:???
>>474
新規作成はできない。
476NAME IS NULL:2006/08/10(木) 23:27:30 ID:???
空気読めよMSアンチ
477NAME IS NULL:2006/08/11(金) 06:58:35 ID:???
MS社員おつ
478NAME IS NULL:2006/08/11(金) 21:03:38 ID:???
そもそもDBMS搭載されている飛行機や医療器具があるのかね?
おまけにSQL Serverはビルゲイツは作ってないんだけど。
何でこんなうましかちゃんが沸いてるの?
真夏日で暑すぎるから沸いたのか?
479NAME IS NULL:2006/08/11(金) 21:12:39 ID:???
悪・即・斬
480NAME IS NULL:2006/08/11(金) 23:14:59 ID:???
社員おつ
481NAME IS NULL:2006/08/11(金) 23:25:23 ID:???
荒らしは放置で
482NAME IS NULL:2006/08/12(土) 11:19:39 ID:???
楽観的ロックで更新時にレコードをチェックしたいのですが
レコードのカラムにレコードのバージョンみたいなものは
特にありません。
こういう場合はチェックできないでしょうか?
SQL Serverが持っていてそれを利用することはできないでしょうか?
483NAME IS NULL:2006/08/12(土) 11:32:02 ID:???
更新日付とか使えば?
484NAME IS NULL:2006/08/12(土) 11:47:03 ID:???
timestampって使えそうだけど
485NAME IS NULL:2006/08/12(土) 13:02:45 ID:???
やはりそういうカラムがないとだめでしょうか?
486NAME IS NULL:2006/08/12(土) 16:25:25 ID:???
主キーさえしっかりあれば全カラム比較する方法で実現できる。ADO.NETでもこの方法をとっている。
487NAME 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
です。

長文すみません。
よろしくお願いします。
488NAME IS NULL:2006/08/15(火) 18:23:25 ID:???
>>487
割と有名なバグで、再作成の元になるmaster..sysaltfilesが書き換わっていないため起きるのですが、
怖くてよう触れませんわ。諦めて固定増分で使っております。
ttp://support.microsoft.com/kb/816939/ja
489NAME IS NULL:2006/08/15(火) 18:43:38 ID:TdMfMJ5H
SQLServer2005 です。

読み取り一貫性で処理を行う場合は、データベースに対し次のコマンドを実行することによって切り替わるそうですが・・・
ALTER DATABASE DB名 SET READ_COMMITED_SNAPSHOT ON;

これをトランザクション単位で切り替える事は可能でしょうか?
490NAME IS NULL:2006/08/15(火) 19:16:53 ID:???
>>489
それはデータベース単位なので無理。
SET TRANSACTION ISOLATION LEVEL SNAPSHOT で対応。
491NAME IS NULL:2006/08/15(火) 19:55:27 ID:TdMfMJ5H
>>490
ありがとうございます!
早速試してみます。
492487:2006/08/15(火) 21:33:17 ID:???
>>488
回答ありがとうございます!割と有名なバグなのですね。
調査が甘かったか…でもサポートオンラインを検索したときに
こんなの出てこなかったけどなぁ。

確かにsysaltfilesを書き換えるのは怖いですけど、ともかく試してみます。
ありがとうございました。
493487:2006/08/16(水) 15:49:29 ID:???
>>488
結果報告です。
どうやらうまくいった模様です。ありがとうございました。
494NAME IS NULL:2006/08/17(木) 14:02:13 ID:???
すみません。質問させてください。
ごく初歩的なことなんですが
シンプルなテーブルを作って
ファイルからデータを挿入しようとしているのですが
できないのでしょうか?
Postgresで言うところの

COPY テーブル名 FROM ファイル名

と言う動作です。
495NAME IS NULL:2006/08/17(木) 14:44:01 ID:???
bcp
496494:2006/08/17(木) 15:30:58 ID:???
>>495
ありがとうございます。
497NAME IS NULL:2006/08/17(木) 16:24:19 ID:F8GdWoXT
>>494
BULK INSERT
498NAME IS NULL:2006/08/17(木) 16:38:38 ID:???
すいません。
SQLServer2005でシノニム使おうかと思っているんですが、
ODBC接続でAccess2003からリンクテーブルを張ろうとしています。

BOLに「リンク サーバー上のシノニムを参照することはできません。」って
あるんですが、まさしくこれでしょうか。

こういったことを行うにはビューを別名で作ってあげるしかありませんか?
499NAME 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レベルでは問題なくアクセスできてファイルコピーもできるのですが。
どうすれば権限を与えられるのでしょうか。
500NAME IS NULL:2006/08/21(月) 02:06:47 ID:???
>>499
よく知らないんだけど、SQLサーバってどのユーザでつなぎに行くんだろ?
「OSレベルでは問題なく」のユーザと同じなのかな?
501499:2006/08/21(月) 07:37:12 ID:kkIwFCrd
>>500
それが私もよくわかんないんです。どのユーザーでつなぎに行ってるかわかる方法
ってどうやって知るんだろ。
502NAME IS NULL:2006/08/21(月) 08:39:01 ID:???
>500-501
MSSQLSERVER サービスの起動アカウントだろう?
503NAME IS NULL:2006/08/23(水) 21:43:02 ID:???
だれか、ライセンスのことについて教えて下さい。
「SQL Server 2005 Standard Edition 」のプロセッサライセンス版
を購入して、サーバーにインストールして使用します。
使用後、そのサーバーが壊れて修理に出ている間、代わりのサーバーに
インストールして使用する場合、ライセンスは新しく購入する必要が
ありますか?
それとも、1台のサーバーで使用している限りは、新しくライセンス
が発生しないでしょうか。

よろしくお願いします。
504NAME IS NULL:2006/08/23(水) 22:21:11 ID:???
いるだろ。
理屈的には、クラスタのスタンバイ側に入れた場合と同じじゃないかな?
505NAME IS NULL:2006/08/24(木) 00:38:46 ID:???
ライセンスなんて(゜ε゜)キニシナイ!
506NAME IS NULL:2006/08/24(木) 02:07:53 ID:???
MSに聞くしか無いんじゃ?
ライセンスの話は他人に聞いてもてきとーな事しか言わないよ。
507NAME IS NULL:2006/08/24(木) 02:53:05 ID:???
この場合は完全な代機だからいらない。
クラスタやミラーリングの場合も完全なパッシブの場合はいらない。
ミラー側を問い合わせ専用で使っている場合は必要となる。
CPUライセンスの場合は代機やパッシブ側のCPU数は同等かそれ以下である必要がある。

MSやLARでも適当なことを行ってくることはあるがそれはたまたま担当の質が悪いケースなので、>>506 に同意。
508NAME IS NULL:2006/08/24(木) 09:09:08 ID:???
>>507
に追記させてもらおう

アクティブサーバ、スタンバイサーバとあってアクティブが壊れ、
スタンバイに切替を行った場合アクティブとスタンバイの機能が
入れ替わるよな?

で、旧アクティブは新スタンバイとして、旧スタンバイは新アクティブとして
そのまま運用していってもライセンス的には問題なし

どちらか片方がスタンバイであればな
もちろん、CPUの数とか問題になってくるけど、同じ構成ならOK

って、MSに電話して口頭だが確認をした経験がある
不安なら>>506
509NAME IS NULL:2006/08/24(木) 11:25:20 ID:???
>>504
は?
510NAME IS NULL:2006/08/24(木) 15:28:45 ID:WrmHQwXk
Windowsマシンから簡単なSQL文(select)を送ってそれのレスポンス(応答)を定期的に
測ってログを取りたい思っているのですが、いい方法ってあります?
1回きりのツールとかであれば、タスクやcronで動かせばなんとかなるとして。
ツールがあれば一番だが、なければ一から作るしかないか。
511NAME IS NULL:2006/08/24(木) 18:39:47 ID:???
>>510
使ってるのがSQLServer2000か2005かわからんが、クエリアナライザとか、
ManagementStudioとかのクエリで、実行プランってあるけどそれどうよ?
かなり正確に時間測れるぞ?

タスクで定期的に実行すればって自分で書いてるし、osqlあたりでBAT作れば
良いような気もする

検討違いな回答ならスマン
512NAME IS NULL:2006/08/24(木) 20:08:17 ID:???
レスポンスタイム≠処理実行時間
基礎中の基礎。
513NAME IS NULL:2006/08/24(木) 23:17:24 ID:???
2005はWindows2000にバンドルしている
ODBCドライバーで接続できまつか?
514NAME IS NULL:2006/08/24(木) 23:36:24 ID:???
>>513
2005で拡張された型や機能を使わなければ利用可能。2000との互換性はかなりあると考えていい。
515NAME IS NULL:2006/08/24(木) 23:40:19 ID:???
>514
レスどもです
516NAME IS NULL:2006/08/25(金) 14:10:00 ID:???
すいません、SQLServer2000から2005に切替を予定していますが、
関数・ストアド等が増えた、なくなったなど、まとめてるサイトとかって
ありますか?
517NAME 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が当たっています。


518516:2006/08/25(金) 17:21:46 ID:???
自己レスですまん
そのあといろいろ調べたら↓で一覧になってました

ttp://msdn2.microsoft.com/ja-jp/library/ms143532.aspx

どうもお騒がせしました
519NAME IS NULL:2006/08/31(木) 23:50:39 ID:???
少しスレ違いかもしれませんが、質問です。

今研究でSQL SERVER 2005 JDBCを使ってるんです、何度javaの環境変数設定してもうまく使えません。
変だと思ってsqljdbc.jarをダブルクリックしたら「invalid or corrupt jarfile」って出て来ます。
何度ダウンロードしても結果は同じです。

このjarファイルはデフォルトで壊れてるんですか?それともこういう仕様なのか、何かjdkとかjreの問題なのでしょうか・・・?
どなたかご存知の方教えてください。
520NAME IS NULL:2006/09/01(金) 02:09:21 ID:dLuo+SQ3
長期間のログデータ等、大量のレコードが格納されているテーブルに検索を掛けたとき、
結果が40000件ヒットしたとして、2001件目〜4000件目…といったように検索結果の部分
を抜き出すことは可能でしょうか?
TOP指定は先頭〜件分、としかできないですよね…。

Javaで検索を掛けて結果をVectorなどのコレクションに格納し、そのコレクションを
JSPでimportして結果を表示させるようなことをしたいのですが、件数が多すぎると
OutofMemoryErrorでエラー終了してしまいます。

どなたかいい方法をご存知でしたら教えて下さい。
521NAME 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"); とする分にはエラーは出ない。
522NAME 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アプリで使えないのが残念。
523NAME IS NULL:2006/09/01(金) 18:06:33 ID:???
>>520
直感で書くけど、これでいいんじゃないの?
SELECT TOP 4000 〜〜
NOT IN (SELECT TOP 2000 〜〜)
524519:2006/09/01(金) 21:07:20 ID:???
>>521
調べたところ、JDBCが認識しないのは単にSQLServer2000と2005クラスが微妙に異なってることが原因でした

com.microsoft.sqlserver.jdbc.SQLServerDriver (2000)
com.microsoft.jdbc.sqlserver.SQLServerDriver (2005)

こんな分かりにくい仕様変更すんなゲイツ
525NAME IS NULL:2006/09/01(金) 21:19:04 ID:???
>>524
526NAME IS NULL:2006/09/01(金) 22:34:53 ID:???
>>523
inは結果セットできてしまうので微妙じゃ
not existsを使うべし。

っつーか前スレあたりに書いてなかったっけ?
527NAME IS NULL:2006/09/01(金) 23:18:30 ID:???
サブクエリ内でTOPを使うときはINでもさほど変わらないよ。
EXISTSを使おうとして、INのときと同じ結果を得ようとしたら、サブクエリをもう一段深くネスとしないといけないし。

ttp://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/05/13/2216.aspx
528NAME IS NULL:2006/09/02(土) 11:17:03 ID:???
>>527
これとは若干シチュエーションが違うような…

でも同じwhere句、order by句が使われているなら
クエリキャッシュが効くのかな

家では確認できないなあ
529NAME IS NULL:2006/09/02(土) 16:20:17 ID:???
SQL Server2005について教えてください

Management Studio上で、システムデータベースで「テーブルを開く」が
グレーアウトして見ることができません

クエリアナライザでSelectすると参照はできるのですが、Management Studioで
見る方法があるのでしょうか?

ご存知のかたがいらっしゃいましたら教えてください
530NAME IS NULL:2006/09/02(土) 19:12:12 ID:???
トランスメタのCPUだと2005はインストール出来ないのか...orz
531NAME IS NULL:2006/09/02(土) 19:24:53 ID:???
ばっかじゃねぇのw
532NAME IS NULL:2006/09/02(土) 20:01:39 ID:???
トランスメタ熱いなw
533NAME IS NULL:2006/09/03(日) 08:05:14 ID:???
>>522
>結果は安定的でデータが増減した場合などで結果がクエリのたび変化するようなケース向き。 
>WEBアプリで使えないのが残念。 

検索に時間がかかる場合も含めて、WEBでこういう場合はどうするのがいいの?
SNAPSHOTサーバーカーソルか一時表を使ってWEBセッションをまたいでDBセッションを開いたままにしておく。
検索結果を普通のテーブルに持つ。タイムアウト分の掃除が必要。
セッションに検索結果か検索結果のキー配列を持つ。
フォームの隠しフィールドに検索結果のキー配列を持つ。
534NAME IS NULL:2006/09/03(日) 16:16:19 ID:???
サーバカーソルやDBセッションを開きっぱなし、というのは有り得ない。
隠しフィールドっていうのも裏側のデータを不用意にクライアント側に流してしまうのが微妙。
通信量も増えるし。
検索結果をテーブルに持つのもちゃんと上手く消せるかによるな。

というわけでサーバ側のセッション変数に持つっていうのがいいんじゃないか。
メモリは食うけど。
535NAME IS NULL:2006/09/03(日) 20:31:59 ID:???
2005を始めて使ってるんだけど、クエリアナライザなくなったの?
.Netで作られた管理ツール重くてかなわんな。
みんな変わりに何使ってるの?
536NAME IS NULL:2006/09/03(日) 21:42:01 ID:???
sqlcmd
537NAME IS NULL:2006/09/04(月) 08:13:40 ID:???
>>535
立ち上がりは遅いけどそれ以降は普通だと思うよ
PCのスペックの問題かも。
538NAME IS NULL:2006/09/04(月) 17:58:27 ID:tiyWzcto
DB server Error (select `inventory`)- Table '***.inventory' doesn't exist

とか出たんだが何だこれ('A`)
昨日まで正常に動いてたんだが

教えてエロい人orz
539NAME IS NULL:2006/09/04(月) 18:25:40 ID:???
管理ツール遅すぎるよな。起動に15秒以上かかって、思考が止まりまくる
ランチャから管理ツールにクエリファイルを渡して起動してるんだけど
15秒も待てないから他のことやってると渡したクエリファイルは無効扱いされ
ふと戻ってみると管理ツールが単体で偉そうにブランクで起動されている。
.NETでアプリ作ったことないけど、こんな漢字なのかね。
540NAME IS NULL:2006/09/04(月) 21:06:09 ID:???
我慢して立ち上げっぱなしにしといたらどうか
541NAME IS NULL:2006/09/04(月) 21:17:54 ID:???
Core2Duo買え
542535:2006/09/05(火) 00:17:22 ID:???
>>541
うへ、CoreSoloだぜwwwwwwwwww

sqlcmdなんてあったのか。SQL Plusのまねなんてしなくて良いのにね。
試してなんだけど、2000のクライアントだけいれで、2005のサーバー
にクエリアナライザで繋がらないのかな。
ダメなら、2000から2005にリンクサーバーで繋いで・・・、って
下Versionから上Versionがそもそも出来るかわがんねー。

誰か、恵まれた環境の人レポートキボンヌー!
543NAME IS NULL:2006/09/05(火) 12:30:50 ID:???
>>539
どんだけショッポイ機器で開発してるんだ?w

レッツノート CF-W2 で、超低電圧版PentiumM 1.07GHz、 メモリ500MBを使ってるが15秒も掛からんぞ。
10秒未満で立ち上がり、次回起動時は2秒で立ち上がる。

もしかして、クライアントPCにインスタンスを構築してしまって、メモリが足らない状況になってるのか?w
そりゃー遅いわな。
544NAME IS NULL:2006/09/05(火) 13:43:47 ID:???
ショボかろうが何だろうが、2000のクエリアナライザは0.1秒で起動するんだよな
管理ツールにクエリアナライザが統合されて、その起動が15秒かかるなら
ユーザにとっては何のメリットもねえ
ショボいのはPCじゃなくてnetテクノロジだろ
545NAME IS NULL:2006/09/05(火) 13:48:52 ID:???
>>539
2000のクエリアナライザで2005がそのまま使える。
実行計画など一部に正しく出ないところもあるが実用上ほぼ問題ない。
546543:2006/09/05(火) 14:14:33 ID:???
>>544
まぁ確かにその通りだな。
547NAME 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の日付のデータはもちろん存在します。


548NAME 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'
549NAME IS NULL:2006/09/07(木) 12:14:22 ID:???
>>547

WHERE date = '2001/06/27 00:00:00'
550547:2006/09/07(木) 17:12:11 ID:???
レスありがとうございます。
CONVERTという関数自体はじめて知りました。

今回のケースでは、CONVERTなしでもいけましたが勉強してみます。
ありがとうございました。
551NAME 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"

でしたら問題ありません。

秒より下の値を指定して更新する方法はないでしょうか?

よろしくお願いいたします。」
552NAME IS NULL:2006/09/07(木) 21:32:10 ID:???
VARIANT経由する時点で秒までしかサポートされないと思う。
553NAME IS NULL:2006/09/08(金) 00:48:30 ID:???
なるほど
554NAME 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 でいってみよう」より
555NAME IS NULL:2006/09/13(水) 17:36:25 ID:???
現在、運用中のSQLServer7のライセンスを
追加したいのですが、どこに売っているのでしょうか?

556NAME IS NULL:2006/09/13(水) 21:55:01 ID:???
>>555
もう売ってないよ
557NAME IS NULL:2006/09/13(水) 23:36:12 ID:???
>>555
ダウングレード
558NAME IS NULL:2006/09/14(木) 01:09:51 ID:???
そういう場合、どうなるんだろうね。
559NAME 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
です。

長文すみません。
よろしくお願いします。
560NAME IS NULL:2006/09/14(木) 14:51:44 ID:???
トランザクションログ50Gってどんなシステムよw
561NAME IS NULL:2006/09/14(木) 14:59:17 ID:???
CREATE DATABASE コマンドで直接作ってみて作れたらDMOの制限 or バグ。
作れないならSQLServerの制限 or バグ。
このあたりから調べてみたら?
562NAME IS NULL:2006/09/14(木) 15:54:12 ID:yVwkjTA+
>>559
まず、トランザクションログを50GBに設計しようとした動機を述べよ
563NAME IS NULL:2006/09/14(木) 17:40:40 ID:???
SQLServer上でMySQL(Linux)をODBCでリンクサーバー指定して、
ストアドから制御しようとしてるんだけど、これって可能?
564NAME IS NULL:2006/09/14(木) 20:47:32 ID:???
>>559
タイムアウトエラーなので、単に時間がかかっているだけでは?
それにしても50GB(以下ry
565NAME IS NULL:2006/09/15(金) 09:15:38 ID:???
>>563
出来ると思うよ。
おれはCSVだけどODBC経由でやっているもん
566NAME IS NULL:2006/09/22(金) 00:27:12 ID:f/msGIHj
Oracle使っていたのですが、
来月からSQLServerの管理を任されてしまいました。
Oracleとの対比で説明してくれるような書籍とかありますでしょうか?
567NAME IS NULL:2006/09/22(金) 06:31:34 ID:???
>>566
山ほどあるよ。書籍もトレーニングも。

Microsoft や PASSJ も当然のようにやってる。
とりあえず「Oracle ユーザのための SQL Server」でググってみ。
こんな長いキーワードでもいろんなもんがヒットするから。
568NAME IS NULL:2006/09/22(金) 13:02:29 ID:???
MSとしてもOracleから是非SQLServerに移ってほしいわけだしな。
地方都市の少し大きい本屋レベルでも普通に書籍は転がってる。
569NAME IS NULL:2006/09/22(金) 14:07:03 ID:LVmMnrWG
VS2005StdとSQLServer2005Devの組合せで
レポート作成機能を使った開発ってできますか?

570NAME IS NULL:2006/09/22(金) 14:27:20 ID:???
Oracleのsequenceに相当する機能は、SQLserverには無いんですか?
571NAME IS NULL:2006/09/22(金) 15:18:13 ID:???
ないどす
572NAME IS NULL:2006/09/22(金) 15:42:02 ID:???
そですか。困ったね。ああ面倒だ。どうしよう
573NAME IS NULL:2006/09/22(金) 16:44:06 ID:???
項目にIdentity属性を指定すればいいという訳じゃないのか?
574NAME IS NULL:2006/09/22(金) 16:58:39 ID:???
>>573
OracleのsequenceはINSERTする前に値を取得できるんだけど、
SQL ServerのIdentity属性ではINSERT後でないと値を取得できない。
困る(´;ω;`)ウッ…
575NAME IS NULL:2006/09/22(金) 19:45:21 ID:???
Insertしてから取得してロールバックしちゃうとか
576NAME IS NULL:2006/09/22(金) 20:42:11 ID:???
>574
Identityを管理しているテーブルはあるよ。
Identityのインクリメントの法則がわかってたら次の値は予想できるでそ?
それでダメか?
577NAME IS NULL:2006/09/22(金) 21:35:10 ID:???
>>576
そのテーブル名を教えてくだされ
578NAME IS NULL:2006/09/22(金) 22:18:02 ID:???
SQLServerに慣れるためにも、BooksOnlineでIDENTITYで検索しなされ。
579NAME IS NULL:2006/09/23(土) 15:43:22 ID:???
そのようにしまふ
580NAME IS NULL:2006/09/24(日) 19:53:07 ID:???
サーバに作成したストアドや関数の中身を取得したいのですが、どうしたらいいですか?

たとえば
ttp://www.vector.co.jp/soft/winnt/business/se331122.html
が、どこから中身を取得してるのか知りたいです。
581NAME IS NULL:2006/09/24(日) 20:26:46 ID:???
>580
sp_helptext か、
改行されてない方がいいなら
直接 dbo.syscomments かなぁ?
582NAME IS NULL:2006/09/24(日) 20:38:12 ID:???
>580
EnterpriseManager開いて、プロファイラを開いて、
ストアドを撰んで中身を見てみて、
もっかいプロファイラを見てみそ。
そこに答えがある。

これいろいろ応用できるから、覚えとくとよか。
583590:2006/09/24(日) 22:40:07 ID:???
>581
dboのストアドは見れないみたいです。
あと、sp_helptextだと、ストアド名が必要ですが、
その一覧を取得する方法も知りたいです。

>582
EnterpriseManagerってサーバーについてるんですか?
サーバーは触れないのです。。。間違ってたらスマソ。
手元にツールは、SQL Server Management Studio Expressだけあります。
584580:2006/09/24(日) 22:40:59 ID:???
名前間違えた。。。orz
585NAME IS NULL:2006/09/24(日) 23:19:53 ID:???
2000だとおもったら2005だったのね。
EnterpriseManagerってのは2000の管理用アプリケーションのこと。
今回は2005なんだから、その単語は無視してくれ。

で、2005だよな、SQL Server Management起動汁。
それでストアドの一覧とかストアドのソースが見れないか確かめてくれ。
なんか、dboのストアドが見れないっつってるとこからすると、
少なくともdboユーザ権限はないみたいに見えるのだけど、
今、自分のユーザはdboユーザ所有のプロシージャの実行すらできない状態なのか?

…すまん。寝るので、後頼むわ。orz
586NAME 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
=============================================================================

587586: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')
==============================================================================
588580:2006/09/26(火) 23:39:15 ID:???
ありがとうございます。586さんの方法でできました。
589NAME IS NULL:2006/09/29(金) 09:03:56 ID:???
Transact-SQLのストアドプロシージャにおいて、
特定のテキストファイルに書き出すことはできますか?
C言語でのfprintfに相当することをしたいのですが。
590NAME IS NULL:2006/09/29(金) 19:10:46 ID:???
質問なのですが

リモートからローカルにバックアップ
ローカルからリモートにリストア

する方法はありますでしょうか?ありましたら方法を教えていただけないでしょうか?
591NAME IS NULL:2006/09/29(金) 19:49:05 ID:???
BackupExecなりArcServeなり使えば簡単じゃね?
592NAME IS NULL:2006/09/29(金) 23:57:07 ID:???
>589
xp_cmdshell+bcp
593NAME IS NULL:2006/09/30(土) 04:18:20 ID:???
>>592
どうもです。
SQL serverには、OracleのUTIL_FILEとかDBMS_OUTPUT相当機能が無いのですね。
細かいことしたければSQLCLR使えってことかな。
594NAME IS NULL:2006/09/30(土) 06:40:43 ID:???
>>591
レンタルWebサーバーのおまけDB鯖なので、そういうのはちょっと・・・
595NAME IS NULL:2006/09/30(土) 10:04:15 ID:???
じゃあ、論理バックアップしかないな。
596NAME IS NULL:2006/09/30(土) 19:49:17 ID:ki1xa2S/
Aテーブルの全レコードのある列をBテーブルの情報から作成した内容で更新したく思います。
それで作業用にストアドプロシージャを作ることにしました。
処理的にはAテーブルをカーソルで開いて
WHILE @@FETCH_STATUS = 0
を条件としてループしながら次々とレコードを読み込みながら
Bテーブル用のカーソルを開いてまたWHILE @@FETCH_STATUS = 0を
利用して更新値を作成します。
ここで困りましたのが@@FETCH_STATUSってネストできないようなので困っています。
ふたつのカーソルを同時に開きながらそれぞれループさせて処理させたいのですが。。
こういう場合ってどうすればよいのでしょうか?
597NAME IS NULL:2006/09/30(土) 20:29:40 ID:???
RDBで普通はそういうコボリーな処理は*絶対*やらない。

やりたい処理の詳細は知らんけど、
(Aのキー、Aの更新後の値)という一時テーブルを作って
Bで一行ずつ読みながらそのテーブルに変換後の値をInsertしていく。
最後にそのテーブルを参照して一気にUpdate…とか。
せめてそんな感じがいいんじゃないのかな。
598NAME IS NULL:2006/09/30(土) 20:33:39 ID:???
>>596
別の変数に退避したら?
SET @T1_STATUS  = @@FETCH_STATUS
599596:2006/09/30(土) 21:14:07 ID:ki1xa2S/
>>597
それもそうですね。
今後のデータについてはトリガで作成するので既存のデータに対して
更新したかったのでこの方法を思いつきましたが更新用テーブルを作成することにします。

>>598
なるほど。
@@FETCH_STATUSに対して直接値を見に行かないといかないと思いこんでいました。
今後はInteger型の変数にでも一時待避させておきます。
ありがとうございます。
600NAME IS NULL:2006/10/01(日) 11:44:08 ID:???
>593
なくはない。外部ストアドプロシージャを使えばいいだけ。
要はActiveXお呼び出し。

でも、メンドウだよ。
あれこれ加工しまくってすでにテーブル形式維持していないならまだしも、
テーブル形式から出力できる形ならSQL一発で出力できるbcp使うほうが何ぼもラク。
加工が必要であれば、ワークテーブルとしてグローバル一時テーブル使えばいいだけのこと。
601NAME IS NULL:2006/10/06(金) 00:03:54 ID:???
SQLServer2005のSQL AGENTを使ったジョブのスケジュール実行についてなのですが、実行すると
「プロセスは作成されませんでした (理由: アクセスが拒否されました。). ステップは失敗しました。」
というエラーが起こります。

CmdExecのジョブなのですが、所有者はDB管理者で実行アカウントのSQL AGENT Service Accountには対象DBへのアクセス許可を与えてあります。
そして、作成したプログラムをプロンプトから実行すれば処理は正常に完了します。

セキュリティ周りの設定だと思うのですが手詰まっています。。。

どなたかアドバイスいただけないでしょうか。よろしくお願いいたします。
602NAME IS NULL:2006/10/06(金) 00:19:49 ID:???
その実行ファイルに、SQL AGENT Service Accountがそれを実行できる権限が無いとダメじゃないのかな。
603601:2006/10/06(金) 00:28:45 ID:???
>>602
あ゙っ…
それです、きっとorz

ありがとうございます。早速試してまます。
604NAME 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を使用すればこのような問題は起きないのでしょうか?
605NAME IS NULL:2006/10/07(土) 00:29:19 ID:???
>604
BOLみてみたけど、SCOPE_IDENTITYの項目を読むと、
君の期待通りの例が最後に載っている様に見えるのだけど、
それは違うの?
606604: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の「現在のセッション」という正確な定義が分かりません。

もし宜しければ、教えて頂けないでしょうか?
607604:2006/10/07(土) 01:25:06 ID:???
自分で書いておきながら、「セッション」と「スコープ」が混ざってしまいました。
これでは読む側も分かりませんね。申し訳ないです。

「セッション」も「スコープ」も、定義が分からないのです。

今分かっていることは、

 INSERTステートメントとトリガーはスコープが異なる
 IDENT_CURRENTは他の処理(クライアント)で挿入されたLast IDまで返されてしまう

の2つだけです。
608NAME IS NULL:2006/10/07(土) 08:24:36 ID:???
MySQLはわかんないけど、
セッションは、ざっくり言うと、ある特定ユーザがDBに接続してから切り離すまでの単位のこと。
スレッドが違えばセッションは変わる。
609NAME 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 になる。
610NAME IS NULL:2006/10/07(土) 16:16:13 ID:???
>>609
なるほど。

 1. insert
 2. 別なストアド実行(ここでもinsertが発生する)
 3. 1.でinsertした行をupdate

というストアドを作る場合は
3のwhereでscope_identityを使うとウマーイわけだ。
勉強になりますた
611604:2006/10/07(土) 23:52:21 ID:???
>>608 >>609

ご説明ありがとうございました。
特に「ある特定ユーザがDBに接続してから切り離すまでの単位」という情報がとても参考になりました。
他ユーザのINSERTステートメントが影響するのかどうかが、とても心配でした。

ストアドプロシージャ・トリガを考慮しないとすれば、
INSERTステートメントを実行した直後にSCOPE_IDENTITY()を実行すれば良さそうですね。

本当にありがとうございました。
612NAME IS NULL:2006/10/08(日) 19:02:36 ID:???
別スレッドで質問して、こちらに誘導されました。
以下、質問の内容です。

Windows 2000 に SQL Server 2000 をインストールして使っていました。
OSのホスト名を変更したのですが、SQL Server に昔のホスト名が残ってしまいます。
(レジストリを検索しましたが、ヒットしませんでした。)

SQL Server は、ホスト名をどこで管理しているのでしょうか?
また、変更するにはどうすればよいのでしょうか?
613NAME IS NULL:2006/10/08(日) 19:57:45 ID:???
>612
ヒント @@SERVERNAME
Books Onlineで検索すると多分正解までわかる。
614NAME IS NULL:2006/10/08(日) 23:00:54 ID:???
>>612
別なヒントは「masterデータベース内」
615NAME IS NULL:2006/10/09(月) 00:14:19 ID:???
nvarcharに日本語、中国語、英語、その他いろいろな言語を入れています。
PHPからUTF-8として読み出そうとしているのですが、どうすればよいでしょうか?
普通に接続して読み出すとShift-JISになってしまいます・・・・
SQLに何か書くのでしょうか?
616NAME IS NULL:2006/10/09(月) 08:19:21 ID:???
>>615
多分PHPレベルでの問題。「普通に接続して」のあたりに原因が潜んでそうだな。
PHPスレで聞いたほうがいい。
617612:2006/10/10(火) 11:44:44 ID:???
>> 613
SQL Server Books Online の中に「サーバーの名前の変更」という項目がありました。
こちらを元に作業してみます。
618NAME IS NULL:2006/10/11(水) 14:29:16 ID:???
SQL 2005でSQL 2000のSQL Enterprise Managerにあたるものはどれでしょうか?
619NAME IS NULL:2006/10/11(水) 20:40:15 ID:???
SQLServer Management Studio
620NAME IS NULL:2006/10/11(水) 21:06:01 ID:???
ありがとうございます
621NAME 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 のみを使用するになってます。
622NAME IS NULL:2006/10/13(金) 20:39:59 ID:???
ファーストサーバってなんだろう。
それ自体わからない超初心者です。

対象の接続したいSQL Serverですが、本当にSQL認証モードなのでしょうか?
認証方法がWindows認証かWindows+SQL認証のどちらかしか選択できないので、
とりあえずドメインユーザで接続を試してみてみたらどうかな。


あと、自分も質問を。
復旧モデルがフルの際に、トランザクションログには今まで実行した命令が
全て書かれていると思うのですが、実行を行ったSQL文自体を参照することが
できるのでしょうか?

DBCC Logだと、トランザクション掛ける際に付けたマークは出てくるのですが、
その際に実行したSQL文を後追いできるのかなと・・・・・・。

勝手にデータ消されて、いつ誰がやったのか調べたいのです。

ご存知でしたら、ご教授いただければ。
よろしくお願いします。
623NAME IS NULL:2006/10/13(金) 22:14:18 ID:???
624NAME IS NULL:2006/10/13(金) 22:36:34 ID:???
ちょっとExpress Editionを落として遊んでみたけど
サーヴァーの設定が結構難しかったよママン
625NAME IS NULL:2006/10/13(金) 22:44:45 ID:???
SQLServer2005におけるパフォーマンスについての質問なんですが、
何十億単位のレコードがはいっているテーブルにおいて、indexの張られている
列の検索に要する時間というのはどれぐらいかかるのでしょうか。

自宅のP4マシンで試そうとおもったのですが、億単位のデータを用意することが
できなかったので、ご存知でしたら教えてください。

また、Indexの再構築にかかる時間も、もしご存知でしたら教えていただけないでしょうか
626NAME 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容量が足りないと、最悪帰ってこない。


変なこと書いてないよね、ね?
627NAME IS NULL:2006/10/14(土) 00:26:41 ID:???
>>626
漠然とした質問だったにもかかわらず丁寧なレスありがとうございます。

データパーティショニングは調べているうちに知って凄い機能だと感動しましたが、
この機能はEnterpriseEdition以上(というかEE)のみのサポートですよね。
使えるのはStandardEditionなので、この機能には期待できません。。。

たとえばMixiとかの「足あと」機能を実装する際に、一人当たり1000件保存していたと
しても、結構なレコード数になりますよね。(現時点で600万ユーザらしいですし)
いま想定しているのは、テーブルをユーザIDごとに分けて(1〜10000ユーザまではテーブルAのように)
テーブルサイズを小さくして行えばいいのかと思っているのですが、しなかった場合ってどれぐらいの
時間がかかるのか知りたかったんです。

※OpenPNEでは1テーブルに全部ログを残していくみたいですが、これだと肥満化してしまう気がします。
この辺の設計って、どこで勉強できるんでしょうか?
628626: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で転がってるみたいだから何となくはわかるんじゃない?
629NAME 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みたいです。
631NAME 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の場合、この辺をどう対応しているのかが気になりました。
632NAME IS NULL:2006/10/14(土) 09:00:23 ID:???
>>631
履歴が30件限定なら、訪問者のIDをキーに含まないようにして代わりに1−30の番号を使用する。
場合によっては第一正規形を崩して1−30のデータを1レコードで持ってもよい。
これによってキーが書き換わる可能性が極めて低くなる。
足跡の更新にはメッセージキューを使うと幸せになれる気がする。
633NAME IS NULL:2006/10/14(土) 09:02:40 ID:???
>>630
レンサバ固有の制限ならそこの業者に聞くしかないような。
634622=623:2006/10/14(土) 09:06:39 ID:???
>>630
インターネット上のサーバでやれないと思う。VPNとかLAN内だとかの話なら別だろうけど。
少なからず、自分はやったことない。

HP見に行ったけど、せっかく管理ツール用意してくれてるんだから、
こっち使おうよ。
ttp://jp.mylittleadmin.com/jp/welcome.aspx
635626: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定義してクリティカル度の再確認を理由にしてクラスタは止めた。

ちなみにサーバ管理者だけど、開発者ではないから構造云々は話半分でお願い。
636NAME IS NULL:2006/10/19(木) 00:34:14 ID:???
もう解約したけど、ファースト鯖はやめとけ。
お試しでもやめとけ。
637NAME IS NULL:2006/10/19(木) 03:03:16 ID:???
理由を3行でどうぞ
638NAME IS NULL:2006/10/21(土) 15:01:41 ID:???
警告: NULL 値は集計またはその他の SET 演算で削除されました

NULLで集計してるのはわかってるんで
このメッセージーを出さないようにするにはどうしたらいいですかね。
639NAME IS NULL:2006/10/21(土) 17:16:21 ID:???
>>626
100億 * 100Byte = 1000GB = 2TB?

1000GBがなんで2TBなんだ
640NAME IS NULL:2006/10/21(土) 22:52:42 ID:???
626じゃないが1レコード200バイトと言っているか2TBではあるだろう。
実際はINDEXつけるだろうから2TBでも収まらんと思うが。
641NAME IS NULL:2006/10/22(日) 01:38:46 ID:???
適当計算とか言ってるからどうでもいいじゃん
実際細かい計算なんてできるもんなのかも知らないが

ところで、誰かLog Explorer for SQL Serverって使ったことある?
使い勝手ってどんなもんなのかな
642NAME IS NULL:2006/10/23(月) 13:11:28 ID:pRTVOkHD
ARCServe+agent for mssqlでオンラインバックアップ取ってる人いたら教えて下さい。

週イチでフルバックアップ、
日次で差分取って復旧出来ますか?
トランザクションログは無視でいいのかなぁと疑問に思いましたので
643NAME IS NULL:2006/10/24(火) 00:33:59 ID:???
しかし情報源が少ないよね〜
ぐぐってもMSのサイト以外なかなか見つからない・・。
644NAME IS NULL:2006/10/25(水) 00:46:10 ID:2cjIU9XR
IntegraionSrvices(SSIS)について詳しい方教えてください。
これからSSISでファイルtoDBのバッチ処理を開発します。
データフロータスクのフラットファイル接続マネージャで、入力ファイル名を
変数から指定する方法はありますか?
開発環境と運用環境のパスが違う可能性があるので困っています。
645NAME IS NULL:2006/10/25(水) 07:29:25 ID:???
トランザクションログはいるだろ。
646NAME IS NULL:2006/10/25(水) 12:52:47 ID:UZdZ/gmr
644です

agent for mssqlはトランザクションログをバックアップしません。と書いてあったので…
DBと別にos側(ファイルべース)でバックアップ取れって事ですかね…
647NAME 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です。
648NAME IS NULL:2006/10/25(水) 16:08:45 ID:???
>>647
Productsテーブルが見つからんというエラーだな。
使用しているデータベースが違うか、スキーマが違うかのどっちか。
テーブルを作ったときのユーザーと接続時のユーザーが違って無いかチェック。
649NAME IS NULL:2006/10/25(水) 16:10:39 ID:???
接続先のDBをNorthWindにしていないからだそ。
650NAME IS NULL:2006/10/26(木) 16:59:14 ID:KETWZyDn
2000なんですけど、DTSの設定情報をコマンド一発でテキストに落とす方法はありますか?
ぐぐったら名前を付けて保存→VBソースに落とす
ってな方法はあるみたいなんですが、
コレが限界なんですかね?

出来ればVBソースみたいなわかりにくいもんじゃなくて
XML形式に落とせれば最高なんですが
(スクリプトで調査・編集しやすいので)
651NAME IS NULL:2006/10/30(月) 19:10:31 ID:???
SQLServer2005 です。

Transact-SQLから、外部に置いたSQLスクリプトファイルを実行するには、どうしたら良いでしょうか?
652NAME IS NULL:2006/10/31(火) 21:28:59 ID:???
>651
セッション別でよければxp_cmdshellでisql経由で。
同じセッションがよければファイルを読み込んで、文字列につっこんで動的SQL。
653NAME IS NULL:2006/11/03(金) 11:17:13 ID:eXw2/gh2
毎月Windowsのセキュリティパッチが公開されているが
DBサーバには何を適用すればよいっすか?
皆さんのサーバはとりあえず全部適用してるのでしょうか?
654NAME IS NULL:2006/11/03(金) 12:04:39 ID:???
そんなもの適用しねぇ
検証しねぇといけないじゃん。
655NAME IS NULL:2006/11/03(金) 13:07:00 ID:???
654に同意

普通はセキュリティパッチの内容を確認して関係あるかないかを判断する
社内にあるサーバならほとんど放置、外からアクセスがあるようなところなら検証が必要
656NAME IS NULL:2006/11/04(土) 02:48:29 ID:???
SP4がらみのトラブル報告が無さ過ぎる。怖くて適用できない。
てか入れないのかなやっぱ。みなさんの仕事では入れてる?
657NAME IS NULL:2006/11/04(土) 03:08:33 ID:???
>>656
入れてますよ。最大メモリの件があったらしいけどそれのパッチも出てるから大丈夫でしょう。
658NAME IS NULL:2006/11/04(土) 03:44:24 ID:???
統計の自動更新を入れていると時々全く応答を返さないクエリが発生するんだけど不具合か何かでしょうか?
CPU使用率はCPU1個分が100%食ってる状態でタイムアウトをなしにして一晩放置しても結果が帰ってこなかった。
一度そういう状態になっても1〜2時間くらいで正常に応答を返すようになる。
毎回同じクエリが引っかかるわけでもなくテーブル3つくらいをサブクエリで使うクエリはどれでも起きることがある感じ。
統計の自動更新を外すと正常に応答を返すようになるので統計の自動更新でおかしなことになってるのかな?
SQLServer2000SP4でWindows2003です。
659NAME IS NULL:2006/11/04(土) 15:23:25 ID:???
>>652
遅くなりました。
ありがとうございました。
660660: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 (条件略))
661660: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 (条件略))

この場合は、問題なく動作したりします。(ワケワカンネ
662660:2006/11/11(土) 11:16:18 ID:???
(前承)

更に、「実績データ」に対して
・データ退避 → テーブル削除 → 再作成 → データロード('20061101'以降のみ)
と行ったら、日付='20061107'では良好になりましたが、
今度は、日付='20061108','20061109'等の未来日付で異常(高負荷)になるようになりました………(ワケワカンネ


ちなみに、サーバ機のディスクに障害はないっぽいです。
(イベントビューアや監視ソフト上ではアラートはあがっていません。)

結局、
[1] インデックス領域が論理的 or 物理的に壊れている
[2] 実績データの件数が多すぎ
[3] クエリが長すぎる(テキストにして10KB以上なんですよね…)
[4] クエリの返す結果が大きすぎる
と考えたのですが、さっぱり判らず、
最終的に、妥協案ですが、「実績データ」を再び
・データ退避 → テーブル削除 → 再作成 → データロード('20061101'以降のみ)
と行い、インデックス作成時に非クラスタ化インデックスで作成したら、
試した限りのパターンで、問題なく(非クラスタ化インデックスの為、極小の負荷がかかっていますが)動作しました。


という訳で、とりあえずは暫定的にはなんとかなったのですが、
いつかのタイミングでまた起こり得そうな感じがして、いまいち納得がいかないんです。


長くなりましたが、
原因が判る(または、推論等でも全然かまわないのですが)方、
同じような現象に事があった事がある方がおりましたら、
何か対処/対応法、意見等をいただけたら幸いです。

長文/乱文、本当に失礼しました。
鬱陶しい、見苦しいと思われた方がいましたら、大変申し訳ありませんが、スルーしてください。m(_ _)m
663NAME IS NULL:2006/11/11(土) 12:09:31 ID:???
JOINの数が多いと途端にパフォーマンスに影響でるんですよね
だからといってどうする訳にもいかなそうですけど
私の場合JOINの相手が件数の少ないマスターだったから
できるだけJOINを除きプログラム側で対処してしまいました
664NAME IS NULL:2006/11/11(土) 17:38:40 ID:???
なんつーか、問題のSQLの特に後半部分が頭悪いと言う印象しかない。

>実績データ 実績1 ON 実績1.日付='20061101'
なんて指定してJOINするDBの設計に欠陥があると思うのだが。
Accessから移植したDBかよ、って感じだ。

ソフトを改良できないんだったら、仕方ないので、
より高速なハードウェアに交換汁。としかいいようがない。
665660:2006/11/11(土) 17:43:02 ID:???
>>663
返信、ありがとうございます。
JOINの問題もあるのかなぁ…
確かに一回ですべてを読み込む必要って無いとは思うんだよね。
特に、発注データのサマリの部分は…
(私なら、少なくともそこは外で取得するような設計するんだが…)

コーディングレベルの対応だと面倒なんだよなぁ…
時間的にも………金額的にも……………_| ̄|○
666660:2006/11/11(土) 17:50:13 ID:???
>>664
返信、ありがとうございます。

ハード面は、一応検討済み。金の問題な訳で…_| ̄|○
それと、設計レベルの不具合(ちゅーかダメダメさ)は今更勘弁。
つか、私自身が一番思ってる所。

ちなみに、実績データのDB設計って
どんなんだったら良かったんでしょうか。
日付・店舗・商品別に各種実績値を持たせてるだけなんだが。
日付毎に横持ちさせた方がいいん?
667664: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
668NAME IS NULL:2006/11/11(土) 19:06:09 ID:???
ああ、タイプミスが。
CURRENT_DATE()関数は当日の日付を返すです。
実際は-7で一週間前にはならんと思うので創意工夫ヨロ
669NAME IS NULL:2006/11/12(日) 07:22:03 ID:???
MySQLと間違えた

ややこしい名前つけんなM$氏ね!
670NAME IS NULL:2006/11/13(月) 11:08:32 ID:???
>>669
眼科池低脳
671NAME IS NULL:2006/11/13(月) 13:18:35 ID:ULPeGeY3
ディスク障害が起こった場合、ログファイル無しで復旧できますか?
復旧方法も教えてください
672NAME IS NULL:2006/11/13(月) 23:18:46 ID:???
>671
ディスク障害で全部お釈迦になったの?
バックアップはいつ時点のどういう状態のものがあるの?
ログファイルがないという情報しかないのであれば、
どう復旧させたらいいのかおいらもわからん。
673NAME 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」
と出てインストールできませんでした。

もしかしたらスレ違いかも知れませんが、
対処法などご存知の方がいましたら教えてください
674NAME 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です。韓国語、中国語のフォントは入れております。
675NAME 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復元時に、接頭語がつかない復元方法の
対処法などご存知の方がいましたら教えてください 。<(_ _)>
676NAME IS NULL:2006/11/15(水) 19:20:15 ID:???
>>675
ユーザーとログインの関連付けがうまく行ってないのじゃないの?
677NAME 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");
を実行すること。
678NAME 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"); でも同じ結果でした。

回答をくれた方ありがとうです。
679NAME IS NULL:2006/11/16(木) 14:59:00 ID:FKuri+ao
SQL Server 2005 Express、Management Studio Expressを使ってます。
同じDBを他のPCにもすぐ用意出来るようにするためにダンプファイルを作りたいのですが、
作り方がわかりません。

右クリック→名前を付けてスクリプト化ってやつですか?
680NAME IS NULL:2006/11/17(金) 15:05:18 ID:???
>>678
独自といえばそうだが、多国語文字を直接SQLにコンスタントに埋め込む必要はあるのか、
プレースフォルダで指定してパラメーターにすれば問題なく使えると思うのだが。
681NAME IS NULL:2006/11/17(金) 15:05:59 ID:???
>>679
Oracleのexp/impユーティリティのようなものを期待してるならそんなものは無い。
ローカルやオンラインで繋がってる環境ならIntegration Services(2005)かDTS(2000)が使えるが
expressではサポートしていない。
データベースの規模が小さいならデタッチしてまるごと持ってゆくのが吉。
682NAME IS NULL:2006/11/18(土) 18:38:36 ID:???
SQL Server 2005SP1にてデータベースミラーリングを組もうとしています。
プリンシパル、ミラー、ミラー監視を同マシンにてインスタンスを3つ作って
ミラーリングする分にはまったく問題なく行くのですが
ミラーを別のマシンにしてミラーリングするとうまくいきません。

具体的にはALTER DATABASE でパートナーを指定するときに
ミラー→プリンシパルのパートナー指定はうまくいくのですが
プリンシパル→ミラーのときのALTER DATABASEがエラーコード1418が
発生しうまくいかないです。

いろいろ調べたところドメイン環境だと何も考えなくて言いようですが
ローカルシステムユーザにて実行している場合はユーザ認証がらみの
エラーが出てしまうようです。
MSDN等見て証明書を発行したりしてみたものの、うまくいかないのですが
誰かマシン2台+非ドメイン環境でミラーリングを組んで成功した人は
いないでしょうか?

683NAME IS NULL:2006/11/21(火) 23:15:04 ID:obYC19E+
技術的な質問ではないのですが・・・
SQLServerにSQLサーバ認証でクライアントアプリを接続した場合、SQLServerのライセンスは
1接続分必要ですがWindows鯖への接続はノーカウントで良いのでしょうか?
684NAME IS NULL:2006/11/22(水) 15:22:47 ID:???
Windows鯖への接続も
不特定多数の場合ならExternalConnectionLicense。
そうでないなら通常のCALが必要のはず。
685NAME 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に変数を使用することはできないのでしょうか。
686NAME IS NULL:2006/11/23(木) 17:18:16 ID:???
>>685
sp_executesql
687NAME IS NULL:2006/11/23(木) 18:10:31 ID:???
TransactSQLって案外その辺変数とかが自由に使えないよね。

ストアド内でIdentityの列を持った一時テーブル作るところで
初期値を変数でセットしたかったんだけど出来なくて悔しかった覚えがある。
688NAME IS NULL:2006/11/24(金) 17:16:44 ID:???
SQL Server 2005 なのですが、テーブルのスクリプトを作成する時に、
列のプロパティの「説明」の部分を出力したいのですが、
SQL Server Management Studio で出力するとこの部分が出力されず、
方法がわかりません。

列の説明の部分も含めてスクリプトに出力する方法があれば教えて
頂けないでしょうか?
689NAME IS NULL:2006/11/27(月) 19:33:50 ID:???
VBでSQLDMOにてバックアップをとったまではいいんですが、
そのバックアップをリストアしようとすると「排他アクセスできません・・・」
というエラーが出てしまい、リストアができません。
何が原因か不明なのでどなたかアドバイス下さい。
690NAME IS NULL:2006/11/28(火) 23:13:31 ID:???
シングルユーザモードで起動してないとか。
691NAME IS NULL:2006/11/29(水) 11:12:23 ID:???
親ストアドから、子ストアドのトランザクションを制御することは可能なのでしょうか?
たとえば、ストアドAからストアドB1、B2を呼ぶような構成の場合、
B2でエラーが発生したらB1、B2のロールバックをA1で行う、といった流れです。
692NAME IS NULL:2006/11/29(水) 11:32:13 ID:???
最後の行ミスりましたorz
×ロールバックをA1で行う〜
○ロールバックをAで行う〜
693NAME IS NULL:2006/11/29(水) 13:44:21 ID:???
>>691
できる。
MSSQLのトランザクションはネストできるから、たとえB1、B2の中にトランザクションがあってもそれなりに動く。
それなりの中身が気になるならBOLを参照。
694NAME IS NULL:2006/11/29(水) 15:50:52 ID:???
>>693
thxです!BOL漁ってみまつ
695NAME IS NULL:2006/11/29(水) 18:26:10 ID:Nq3VYQ/3
varchar (MAX)だけど、使いやすっ
結構レスポンスも早いけど・・・使いまくってるが大丈夫かなぁ。

みんなそう?
696NAME IS NULL:2006/11/30(木) 00:21:12 ID:???
2005使ってるんだが、メンテナンスプランでジョブの実行順序が
制御できないんだが、漏れだけか?
ジョブはテーブルのcsvエクスポートをSSIS保存したのを、
そのままステップにいくつか登録してジョブとしたもの。
これと同じようなジョブをもう1つ作って(1つのジョブにしなかったのは
それぞれ単体でも実行したいから)、この2つを順番に実行したいから
メンテナンスプランからジョブをまとめました。

メンテナンスプランで矢印を繋いで制約を完了とか成功にしてるんだが
それぞれのジョブがパラレルで動いてしまうのです。
なんか勘違いしてますかね。
697NAME 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にはアップグレード版ってあるのでしょうか?価格はいくら?
698NAME IS NULL:2006/11/30(木) 23:51:02 ID:EIrKJZOX
699NAME 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ですが、これで何かわかるかたはいらっしゃいますか?
700699:2006/12/06(水) 09:47:34 ID:???
未だによくわかっていませんが、とりあえずExpressを使うと大丈夫そうなので
それで対応しました。
とりあえずということですが・・。
701NAME IS NULL:2006/12/06(水) 10:55:28 ID:YuO4Y4BI
vistaみてーな正式版も出てない怪しいおもちゃでDBを運用するようなヤツがいるのか?
まだ公式な情報も無いし、あちこち大幅に変わってるし、メーカーも対応してないのにか?
遊びや実験でやるんならわからんでもないが
702NAME IS NULL:2006/12/06(水) 11:05:23 ID:6GghITXQ
Microsoft Accessのテーブル内フィールド最大個数は255個
Microsoft SQL Serverのテーブル内フィールド最大個数は何個ですか?
703NAME IS NULL:2006/12/06(水) 12:01:06 ID:???
1024カラム/行。むしろ8,060バイト/行の制限ほうが先にくる。
704NAME IS NULL:2006/12/06(水) 12:04:07 ID:???
>>703
d
705699:2006/12/06(水) 12:47:36 ID:???
>>701
別に正式に運用しているわけではありません。
テストしてるんです。
それと正式版です。
706NAME IS NULL:2006/12/06(水) 12:49:46 ID:???
MSDNな人と企業ユーザーの一部は正式版使えるな
しかし、クライアントならともかくサーバーをいきなりテストする意味は
707699:2006/12/06(水) 12:57:26 ID:???
>>706
私が悪かったです。ごめんなさい。
荒らしてすみませんでした。
708教えてください・・・:2006/12/06(水) 14:51:46 ID:lAjnh/tr
Sql server management studio express でテーブルを開く際、いちいち右クリックしないといけないんでしょうか?
他のDBのツールの癖でついリターンキーを押下してしまいます。
709NAME IS NULL:2006/12/07(木) 19:37:09 ID:iGAVIqmT
今までLANだけで使っていたSQLServerがあるのですが、
これをHTTPしか使えない外からアクセスしなくてはならなくなりました。
例えばSQLServerのネットワークプロトコルをHTTPでWrapするようなものって
ないでしょうか?
710NAME 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 文字まで格納できることを示します」となっているので、
てっきり全半角関係なく文字が入るものと思っていたのですが・・
何か他に見落としている違いがあるのでしょうか?
711NAME IS NULL:2006/12/07(木) 20:46:44 ID:???
すいません、勘違いだったみたいです。両方で同じ結果が得られました
スレ汚し失礼しましたorz
712NAME IS NULL:2006/12/07(木) 22:07:47 ID:???
charのつもりがncharだったとかかしら
charとvarcharなら、どっちも`あいうえお'は入らないし。
713NAME IS NULL:2006/12/07(木) 23:27:39 ID:???
charは、固定長の文字列
varcharは 可変長の文字列として扱われる
日本語は2バイトとして扱われるので5バイトであれば3文字格納しようとするとエラーになる。

nchar、nvarcharはUnicode文字列を扱うためのデータ型。こちらはシングルバイト文字も2バイトとして格納される。
おれみたいにWebシステムばかりつくっているとncharとnvarcharをもっぱら利用する。
714NAME 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を行って
その度に増加しているのですが現象の原因がよく分からないのです
715NAME IS NULL:2006/12/08(金) 22:50:17 ID:R+mvYS7n
SQL Server 2000を初めて使うことになったのですが、text型のデータの
出し入れのやり方がわかりません。

MySQL3で動いていたものを移植しているのですが、単純に移植したら
大きいデータが途切れて返ってくるのですが、、、

どうしたらいいものでしょうか
助けてください、、、
716NAME IS NULL:2006/12/08(金) 23:01:15 ID:???
>>715
なにで使ってんのかぐらい書けよ。PHPか?
717NAME IS NULL:2006/12/08(金) 23:08:38 ID:???
>>716
FreeBSD6.1
Apache1.3
PHP5
です。
718NAME 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とかポスグレというのは無理ですよね。
719NAME IS NULL:2006/12/10(日) 12:10:53 ID:???
>>718
できる、できないの話ならできるし、Internetの鯖がMySQLだろうが
Sybaseだろうが可能だろう。

ただ、>>718程度の知識でソレを実践しようとすると、
そのプロジェクトはデスマ決定だろうなぁ。
720NAME IS NULL:2006/12/10(日) 12:16:50 ID:ke+O4cHU
>>719

できるできないの返答ではなく手段を聞いているのだ。

要はおまいは説明できないんだろ?

「Internetの鯖がMySQLだろうがSybaseだろうが」

この文の書き方時点で、俺以下確定だ。
721NAME IS NULL:2006/12/10(日) 12:19:06 ID:???
ID:ke+O4cHUが必死になってまつな
722NAME IS NULL:2006/12/10(日) 12:20:00 ID:???
アフォなSEが2chで質問して逆ギレでつか
723NAME IS NULL:2006/12/10(日) 14:05:07 ID:???
DB板には珍しい現象ですね!(・∀・)ニカ!
724NAME IS NULL:2006/12/10(日) 16:24:31 ID:???
普通にSIerに相談しろって事だろ。
しかし、そういう案件でSQLServerに拘る理由がわからんが。
どんなシステムでもエラー処理は気にしなきゃいけないし、
「気にしたくないのでSQLServer」ってのがワケわからん。

相談される方も商売だから対応するだろうけど、
携帯系だとMySQLやSybaseの方が導入実績多いんだが。
725NAME IS NULL:2006/12/10(日) 17:24:55 ID:???
>718
BOLはもってないんか?
ちょっと、目次を眺めてみようとか思わんのか?
なんかわけわからん噛み付きしてるしみてて気の毒になってきた。
726NAME IS NULL:2006/12/10(日) 22:48:20 ID:???
>>718
ところで、もしその2つのSQLServerが同じLAN内にあったとしたら、
その2つのSQLServer間のデータのやりとりは出来る当てはあるの?

インターネットだろうがLANだろうがTCP/IPには変わらないので、
同じやり方すればいいんじゃね?
727NAME IS NULL:2006/12/11(月) 00:00:16 ID:CSR5Laje
>>718
SQL鯖側のポート1433を空けておけばLAN内の鯖接続と同じさ!
728NAME IS NULL:2006/12/12(火) 18:36:03 ID:???
そして、LAN内と同じようにウイルスにやられると・・・
729NAME IS NULL:2006/12/12(火) 22:33:46 ID:???
saのパスワードブランクでヨロw
730NAME IS NULL:2006/12/13(水) 00:14:26 ID:yVx21Jep
つーことで、レプリケーション使えばいいんだよね?
しかし安いレンタル鯖では無理だろうな。専用鯖ならいいが。

話それるけど、わかってはいても SQL Server を SQL って略すのは慣れないなぁ。
俺の前の上司がそうだったんだけどさ(w
731NAME IS NULL:2006/12/13(水) 06:34:30 ID:???
そしてデスマが始まるのか…
732NAME IS NULL:2006/12/13(水) 15:09:04 ID:???
♪やっとこやっとこくりだしたー
733NAME IS NULL:2006/12/14(木) 15:09:47 ID:EhO4PNVc
>>718 のレベルじゃ概要設計もままならないだろうに
メンバがかわいそうだよ
734NAME IS NULL:2006/12/14(木) 19:53:10 ID:???
妙なトコで金をケチって大失敗するいい例だろうなぁ。
735NAME IS NULL:2006/12/14(木) 23:05:49 ID:???
>>733
>>718 に任せてる時点でメンバも似たようなモンなんだろ。
736NAME IS NULL:2006/12/14(木) 23:20:25 ID:???
SQLServer2000で、毎年3月31日の23時50分にSQLを実行するような
ジョブをスケジューリングしたいのですが、可能でしょうか?

日付を3月31日に指定しても次の31日(5月31日)に、
再度実行されてしまいます。
737NAME IS NULL:2006/12/15(金) 14:08:08 ID:???
>>736
10年分くらい手動で登録しておくとかw
それ以降は保守費用が必要ですよと・・・。
738736:2006/12/16(土) 00:31:24 ID:???
>>737
それは最終手段ということでw
どうしても無理っぽかったらそういう方向でいこうかと思います。
739NAME IS NULL:2006/12/20(水) 01:07:19 ID:11kqGl3X
インストールの時にシステムデータベースやtempdbの配置を細かく指定する方法ありますか?
データファイルとトランザクションログを別ディレクトリに配置したいのですが…
740NAME IS NULL:2006/12/20(水) 22:52:21 ID:aocdH2Ll
メンテナンスプランのインデックスの再構築で、
「ページごとの空き領域比率を変更する」に20%をいれといたら、
DBのサイズが4倍に膨れ上がったorz。これはMSのワナですか?
741NAME IS NULL:2006/12/21(木) 01:38:54 ID:???
>>740
FILLFACTORは指定の%だけデータをつめる指定だから、4〜5倍になるのは当然じゃない?
別のDBMSでは空き分を指定するものもあるからたまに勘違いするやからがいる。
742NAME IS NULL:2006/12/22(金) 01:17:01 ID:NXkTsvze
>>741
一度はそう思って納得してたんだが、
SP1を適用後、「ページごとの空き領域比率を変更する」に80%
を設定したら、またしても4〜5倍に膨れ上がった…orz
2重トラップかーーーー!?
743NAME 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

ちまちま省エネサーバ計画、頓挫。
744NAME IS NULL:2006/12/22(金) 16:04:32 ID:???
>>743
CrusoeはCPUチェックで蹴られるお。
745NAME IS NULL:2006/12/22(金) 16:20:58 ID:Gv6jbZYz
2000から2005に移行中です。
ユーザーをsp_help_revloginで移す予定ですが、オブジェクト権限とかは設定しなおしですか?
746NAME IS NULL:2006/12/23(土) 10:58:07 ID:???
SQLServer2000+ADOのありがちなシステムの
ソースチェックを依頼されたので、見ているのですが
接続プールを自前で実装しちゃっています。
ADOにプール無いんでしたっけ?
(デフォルトで作動しているような気がするんですが)

747NAME 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

前に接続プールを自前で実装したはいいものの、シングルスレッドで動かしちゃってて "遅い!" って怒っている人を見た。
748NAME IS NULL:2006/12/23(土) 17:45:31 ID:???
>>747
まさに欲しかった情報です。ありがとうございます!

マルチスレッドだと若干扱いが難しくなるようですね。
プログラム全体で閉じないConnectionを1個
各スレッドで扱うConnctionは1個
って感じでしょうか
749NAME IS NULL:2006/12/24(日) 21:50:24 ID:???
SQL SERVER 2005をアンインストールしたいんだけど、コントロールパネルから
アンインストールをすると必ず失敗する
どうすればいいの?
750NAME IS NULL:2006/12/24(日) 21:56:38 ID:???
OS入れなおせw
751749:2006/12/24(日) 22:05:54 ID:???
やっぱり?
ttp://support.microsoft.com/kb/909967/ja
のとおりやっても駄目なんだよね

Virtual Serverfにインストールするべきだった。
やばくなったらファイル削除するだけだし
752マルチポスト警報:2006/12/26(火) 00:53:32 ID:???
753NAME IS NULL:2006/12/26(火) 11:01:18 ID:???
SQLServer2000のフルテキスト検索を試しているんですが、
NorthwindのCategoriesで試しても0件しか帰ってこないです。

条件の指定がおかしいのでしょうか?
下記のクエリーで試しているのですが。
select * from Categories
where CONTAINS(Description,'Sweet')

サポートサービスのフルテキスト検索も始まっていて、
クエリー実行時も特にエラーは起きていないようなんですが。
754NAME IS NULL:2006/12/27(水) 01:52:54 ID:HQEHQMMV
ファイル配置を検討中です
700GB程度のDBですが、データファイルサイズは皆さんどれくらいにしてます?
1ファイル50GBくらいにしたほうがいいのかな〜?
この辺りの定石があったら教えてください
755NAME IS NULL:2006/12/29(金) 12:35:58 ID:???
nchar と nvarchar ですが、5桁程度の文字列の場合で、100%固定長ではない場合
(だいたい5桁はいるけど、まれに それ以外の桁数が発生する)

こんな場合、みなさんなら nvarchar を使いますか?
それとも、nchar を使いますか?

ちなみに、この項目は、そのテーブルのプライマリキーです。

桁数が多い時は無条件に nvarchar を使いますが、短い時は、
nchar にすべきか、nvarchar にすべきかいつも迷います。

アドバイスください。
756NAME IS NULL:2006/12/29(金) 13:49:31 ID:???
固定でいいんじゃね?
757NAME IS NULL:2006/12/29(金) 16:24:44 ID:???
100%固定長でない値が入るカラムを固定長にすると
直接select文でデータを見たいときとか
いちいちwhere xxxx = ' 1234' みたいに聞かなきゃいけないから面倒くさい
758NAME IS NULL:2006/12/29(金) 16:28:02 ID:???
>>755
> それ以外の桁数が発生する

細かいことだけど「それ以下」じゃなくて?

おれは、基本的に同一の桁数にならない場合は varchar 系を使う。

char 系だと、桁数が不足している時に後にくっつく空白の存在を忘れ
てバグってしまったことがあるから。
759NAME IS NULL:2006/12/29(金) 17:29:26 ID:???
>>755
データをゼロパディングさせられれば固定長。
でなければ可変長だな。
760NAME IS NULL:2007/01/03(水) 03:30:37 ID:???
SQLServer2000のデータベースサーバーインストールをしようとしているのですが、
インストール中、サーバー設定の部分で以下のエラーが出てしまいます。
サーバーの設定に失敗しました。 詳細についてはサーバーのエラーログと、C:\WINDOWS\sqlstp.logを参照してください。
何度試してもこのエラーが出てしまい、sqlstpを見てもよくわかりません。
どなたか教えてもらえませんか?
761NAME IS NULL:2007/01/03(水) 07:29:04 ID:???
>>760
どんな環境にインストールしようとしてるの?
sqlstp.logを参照できるのは、あなただけなんだけど・・
762NAME IS NULL:2007/01/03(水) 09:35:19 ID:???
>>760
> sqlstpを見てもよくわかりません。

なんで、晒そうとしないんだ...。

> どなたか教えてもらえませんか?

104 に電話して、市内のエスパーさんの電話番号聞いて、電話すればいいと思うよ。
763NAME IS NULL:2007/01/03(水) 18:41:28 ID:???
>>760
もしかしてWindows2000 SP2以降に入れようとしてるとか?
SP4とかに入れようとしてるなら、SQL Server 2000のSP3かSP4を入れないと
すんなりインストール出来なかった覚えがあるよ。
「サーバーの設定に失敗しました」の後にリブートしてから、
SQL Server2000 SP4を入れると確かOKだったはず。
764760:2007/01/04(木) 04:08:47 ID:???
>>761 >>762
レスありがとうございます。
ごめんなさい;;晒すべきでしたね。
sqlstp.logを
http://www.uploda.org/uporg641625.txt.html
にアップしました。 PASSは sql です。
>>763
試してみます〜。レスありがとです〜
765NAME IS NULL:2007/01/04(木) 22:55:33 ID:vVnBA9bS
SQLServer2005ですが、MySQLのMD5()関数のようなものはありますか?
766NAME IS NULL:2007/01/10(水) 21:41:40 ID:???
bcpコマンドで、
bcp out ... orderヒントを使うのと、
bcp queryout ... rder by 句を使うのとどう違うんですか?
767NAME IS NULL:2007/01/10(水) 21:42:20 ID:Io9Psu79
上のを訂正します。

bcpコマンドで、
bcp out ... orderヒントを使うのと、
bcp queryout ... order by 句を使うのとどう違うんですか?
768NAME IS NULL:2007/01/11(木) 13:46:41 ID:???
>>767
マニュアルを見たらヒントはロード時専用のオプションのように書いてあるが
outには影響しないのではないかな?
769NAME IS NULL:2007/01/12(金) 11:55:16 ID:OY3pGSSx
SQLサーバ2000SP4でインデックスの断片化状況が監視できる
パフォーマンスカウンタの項目はありませんでしょうか?
\SQLServer:Access Methods\あたりではないかと見込んでいますが
770NAME IS NULL:2007/01/12(金) 22:21:17 ID:bkYGPvz+
>>768
よく分からない・・・

でも、返答ありがとう
771NAME IS NULL:2007/01/16(火) 11:15:40 ID:???
新サーバーへ以降を考えていますが、処理速度があまりにも悪く疑問に思っています。
ある社内アプリケーションで比較した場合ですが、旧サーバーで10秒で済むものが、新サーバーでは40秒となってしまいます。

考えられるのは、プログラムの関係で、SQL2005(新サーバー)のオプションでデータベースは2000を指定しています。
この設定で処理能力はここまで落ちるものでしょうか?


旧サーバー
P3-1GHz*2 RAM2GB SQL2000STD

新サーバー
XEON2.8GHz*2(4CPU) RAM4GB SQL2005WorkGroup
772NAME IS NULL:2007/01/16(火) 11:58:18 ID:???
>>771
何か設定が悪いんだろうな。それだけの情報だとコンサル入れろとしか言えない。
773NAME IS NULL:2007/01/16(火) 12:18:27 ID:WaLxqazn
Windows 2000 Server SP4
SQLserver SP3aの環境です。

ハードディスクの空き領域が少なくなってきたので、
「トランザクションログの切り捨て」後に「データベースの圧縮」を実行しました。
圧縮後
トランザクションログが、6.5GB → 1.5GBまで縮小したのですが、
その後、日次運用のDB更新処理をしたら
トランザクションログが、1.5GB → 6.5GBまで増大してしまいました。
ハードディスクの空き領域が確保できず困っています。

DB更新処理は
DB内のレコードを全件削除し、新たなレコードをINSERTする処理です(いわゆる全件更新)。

このような経験のある方、回避策を教えてください。
よろしくお願いします。
774NAME IS NULL:2007/01/16(火) 12:58:18 ID:???
>>773
復旧モードは何で運用してるのか?
更新で1トランザクションで大量更新はしているのか?その対象になるデータ容量はどのくらいか?
775NAME IS NULL:2007/01/16(火) 13:42:05 ID:???
>>773
>DB内のレコードを全件削除し、

Truncate Tableを使ったらどうだ?
776NAME IS NULL:2007/01/16(火) 14:50:15 ID:???
>>774
>>775
レスありがとうございます。

・復旧モードはシンプル
・1トランザクションで大量更新は…分かりません。すみません。
 全部で約100個のテーブルを10個ずつ
  レコード削除は、Truncate Table
  レコード追加は、BCPユーティリティでテキストファイルから追加
 処理しています。
 トランザクションの開始と終了が明記されておらず、
 1トランザクションがどこからどこまでか見えません。
・対象のデータ容量は約9GBです。

これで何か分かるでしょうか?

自分でも調べていますが、なかなか原因が掴めません。
よろしくお願いします。
777NAME IS NULL:2007/01/16(火) 15:40:48 ID:???
>>776
シンプルならログエリアはほっといても再利用されますし、
truncate tableはDDL操作だから変更前データは記録されないし、
bcpも最小ログ動作で動いてそうだから、問題はなさそうに思えるな。

ログファイルのプロパティはどうなってます?
ログファイルの自動拡張の有無、MBまたは%単位。最大サイズあたりです。
このあたりにはバグがあって%から一度MB単位に変更して、再び%に戻すとなぜか
とんでもない数字のMB単位になって%に戻らないといった現象が見られます。
778NAME IS NULL:2007/01/16(火) 15:59:50 ID:???
>>777
訂正)ここで書いてるバグはtempdbの話だったかもしれない。通常DBは問題ないはず。
実際にそれだけのログが書き出されて拡張しているのか単にnextが大きすぎるかは見極めたほうがいいので
一応調べてみてください。
779NAME IS NULL:2007/01/16(火) 17:49:31 ID:???
データベースA と データベースB があって
データベースAの商品テーブルとデータベースBの商品区分テーブルをJOINするとして。
例えば

SELECT A.商品名, B.商品区分名
FROM 商品テーブル AS A
LEFT JOIN データベースB.dbo.商品区分テーブル AS B ON A.商品区分 = B.商品区分

みたいなSQLを発行するとJOINできたんだが
なんでJOINできたのか私には良くわからなかったんだ
これは、DBの設定でアクセス制限かけてなかったり、2つのDBが同じサーバーにあるから有効なのかな?
あと、こういうJOINの仕方には何か名前があるのだろうか?
Googleで調べるのに、良いキーワードがわからなくて…
780NAME IS NULL:2007/01/16(火) 18:05:45 ID:???
>>777
>>778
アドバイスありがとうございます。

ログファイルは自動拡張有り、10%単位、最大サイズ指定無し
で、仕様上設定変更できないんです。

とりあえず、更新処理でのログの書き出し方をもっと詳しく解析する必要がありそうですね。
テスト環境は一応(別の場所に)あるので、いろいろ試しながら調べてみます。
時間掛かりそうだなぁ…ま、仕事なのでしょうがないです。

いろいろありがとうございました。
781NAME IS NULL:2007/01/16(火) 23:20:39 ID:???
初心者スレ?が見あたらないのでここで質問させてください。

Windows 2000 Server, SQL Server 2005でWebアプリ開発を命じられました。
社内で使用するSNSの構築なのですが、データベースはほとんど触ったことがなく
日々勉強しながらの開発を行っております。

ブログやコミュニティにてユーザが自由にコメントを記述できるようにしたり、
ユーザ間でメッセージのやりとりを行うようにしたりしているのですが、
いらなくなったメッセージやコメント(ユーザが削除すると決めたもの)は
DELETEしてしまっても良いのでしょうか?

一般的にDBでは削除は行わず、フラグをたてて「消したこと」にする、と本に書いて
あったのですが、その場合ディスクサイズが膨れる一方だと思うのですが。

変な質問ですが、宜しくお願いします。
782NAME IS NULL:2007/01/17(水) 00:19:20 ID:???
>781
データを実際に削除するしないはシステムのコンセプトで決めるものなので、
消して良いとか悪いとか即答は出来ない。

フラグを立てる事で削除の代わりとして、実際の削除を行わないケースは、
後から履歴を追いかけられる様にする時に使う。
これだって実際に削除する代わりに、削除前のデータと操作の日時などを
ログに残せばよい訳なのでね、絶対にこうでなければならないと言う訳では
ないのです。

単純に考えるなら、削除するデータはDELETEして良いが、トラブルが起きた時に
削除したデータを確認する事の出来る手段を用意するかしないか、そこで
判断できるのではないかな。
783NAME IS NULL:2007/01/17(水) 01:55:22 ID:7eR0lpLP
>>781
Windows(Macもか?)でファイルを削除したらゴミ箱に入るのはなんでか考えてみ。

SQL ServerだからとかWEBアプリだからとか難しく考えんでいいと思われ。
やってるこたぁ実世界と一緒じゃよw
784NAME IS NULL:2007/01/17(水) 01:55:46 ID:???
>>782
なるほど。 丁寧な回答ありがとうございます。
後で履歴を追いかけるために残すのですね。

最初はフラグをたてて、ある期間後にDELETEすることにします。
785NAME IS NULL:2007/01/17(水) 07:29:55 ID:???
SQL Server絡みのイベントログについて、こちらで聞いても大丈夫ですか?
786NAME IS NULL:2007/01/17(水) 18:29:14 ID:???
>>785
MySQLの質問でなければいいと思うよ。
787NAME IS NULL:2007/01/18(木) 01:04:03 ID:???
>>786
PostgreSQLで、イベントログを参照するにはどうしたらいいですか?
788NAME IS NULL:2007/01/18(木) 01:12:32 ID:???
>>787
それはさすがに↓で聞け
Oracle 総合 Session6
http://pc10.2ch.net/test/read.cgi/db/1162215948/
789NAME IS NULL:2007/01/18(木) 15:34:56 ID:+JE8Wk3H
SQLServer2000のストアドかトリガーから
COMは呼び出せますか?
サンプルソースなどご提示いただけるとうれしいのですが
790NAME IS NULL:2007/01/19(金) 01:56:57 ID:6RRbIvbO
>789
http://www.amazon.co.jp/exec/obidos/ASIN/4798100439/
に出てたので見ながら呼んでみたことはある。p370-
sp_OACreateでインスタンス作ってsp_OAMethodでメソッド呼んで
sp_OADestroyで破棄した。
791NAME IS NULL:2007/01/19(金) 20:04:31 ID:1o6mCdkW
winXP環境で、

$db_connect = mssql_connect ("localhost","sa","パスワード");

というphpファイルで同一PC上にあるSQLserverにアクセスしたところ、成功しました。

実際には、別のWindows2003サーバにアクセスしたいのですが、
localhostの部分をIPアドレスに変えるだけではダメなのでしょうか?

ローカル環境
Apache2.0
PHP5.1
SQLserver2000

接続先サーバ
Windows2003
SQLserver2000

よろしくお願いいたします。
792NAME IS NULL:2007/01/19(金) 20:14:07 ID:???
接続先がファイアウォールでポート閉じてる可能性大。
793791:2007/01/19(金) 21:25:03 ID:???
>>792
ありがとうございます。

サーバー関係とか難しいですね。。。
チャレンジしてみます。
794NAME IS NULL:2007/01/20(土) 00:41:29 ID:???
SQL Server Expressをローカルのマシンに入れて、Accessのadpでシステムを
組んだ場合、データベースの知識がそんなに無い方達(運用する現場の方達)が、
日々の業務のデータのバックアップを取るようにするにはどうしたらよいのでしょうか。
ボタン一つでメモリスティックやMOなどにmdf,ldfファイルをコピーできればよいのですが。
795NAME IS NULL:2007/01/20(土) 10:21:29 ID:GIKn2zRa
>>791
pingは通るんだよね?
796NAME IS NULL:2007/01/20(土) 10:22:05 ID:???
↑sage忘れた
797NAME IS NULL:2007/01/20(土) 10:37:13 ID:???
>>794
ADO経由でBackup Database文実行すればいい。
保存先フォルダとかファイル名などのパラメタは
GUI経由でACCESS側で作ってやればいいだろ。

で、↑の処理をボタンのイベントに仕込めばOK。

798NAME IS NULL:2007/01/21(日) 09:06:44 ID:???
>>797
レスありがとうございます。

> 保存先フォルダとかファイル名などのパラメタは
> GUI経由でACCESS側で作ってやればいいだろ。
> で、↑の処理をボタンのイベントに仕込めばOK。
ここの部分は具体的にどうやればいいのかすぐに分かりましたが、

> ADO経由でBackup Database文実行すればいい。
ここの部分は良く分かりませんでした。
Backup Databaseは、osqlで動かす場合のコマンドは分かりますが、
adpとかで動かす場合が分からなくて、ぐぐってみたのですが、
コードのサンプルもみあたりませんでした。

もう少しヒント、お願いいたします。
799NAME IS NULL:2007/01/21(日) 18:17:03 ID:???
>>790
ありがとうございました。
使うときがきましたら、その本を買ってみたいと思います。
800NAME IS NULL:2007/01/22(月) 09:07:08 ID:???
>>798
> > ADO経由でBackup Database文実行すればいい。
> ここの部分は良く分かりませんでした。
> Backup Databaseは、osqlで動かす場合のコマンドは分かりますが、
> adpとかで動かす場合が分からなくて、ぐぐってみたのですが、
> コードのサンプルもみあたりませんでした。
> もう少しヒント、お願いいたします。

T-SQL を実行する方法がわからない、と言ってる?
SELECT を実行するときと同じなのだが。
801800:2007/01/22(月) 09:15:17 ID:???
これ。

Execute メソッド (ADO Connection)
http://msdn.microsoft.com/library/ja/jpado260/htm/mdmthcnnexecute.asp

SELECT を実行するときと同じってのは間違いだった。INSERT, UPDATE とかと同じ。
802800:2007/01/22(月) 09:18:06 ID:???
間違いってのは言いすぎだった。
とりあえず細かいことは気にせず Execute メソッドでやればできるってことでがんばってくれ。
803NAME IS NULL:2007/01/22(月) 13:33:03 ID:???
>>800
804791:2007/01/23(火) 20:45:56 ID:???
>>795
ありがとうございます。
pingは通っています。

追加で質問させてください。

サーバ名での接続と、IPアドレスでの接続はどう違うのでしょうか。
MySQL等のように、どちらでも良く、
IPアドレスが変わった際にもサーバ名であれば対応できる。
と言う程度の認識でいいのでしょうか?

よろしくお願いいたします。
805NAME IS NULL:2007/01/23(火) 22:48:06 ID:???
>>804
どちらでも基本的にはかわらない。
というか何でそんな質問してるのかがわからない。
ちなみに localhost は 127.0.0.1 に解決されている。

期待通りに動かなかった時はどんなエラーが返された?
806NAME IS NULL:2007/01/24(水) 01:04:22 ID:???
>804
Windows認証が入るとサーバ名とIPアドレスで挙動が変わったり。
807NAME IS NULL:2007/01/24(水) 14:10:49 ID:???
2000なんですが、DTSのローカルパッケージに所有者がありますよね。
俺のローカル サーバー上で作ると所有者が「社内のドメイン\俺」に
なりました。これを.dtsファイルに保存して、他のサーバーにロード、
保存すると、所有者が俺のままになっています。
ひょっとして社内のドメインが見えないと使えないのか?と思って
実験しました。
VitualPCのAdministratorで作ったパッケージ(所有者はVitualPC名\Administrator)
を上記の方法で自分のサーバーに持ってきて、VitualPCは閉じたのですが、
持ってきたパッケージは普通に実行できます。
ちなみに、saのパスワード無しで操作しています。
パッケージをユーザー環境に持って行きたかったのですが、所有者は
どのように扱えばよいのでしょうか?
808791:2007/01/24(水) 15:19:33 ID:???
>>804
>>805
ありがとうございます。
ローカルのXPがドメインに参加していたため、
IPアドレスでの接続ができなかったようです。


現在、自分のローカル環境では、
$db_connect = mssql_connect ("ホスト名","sa","パスワード");
の、
ホスト名部分が
192.168.0.20(ローカルWinXPマシンのIPアドレス)
自分のコンピュータ名
127.0.0.1
で接続が出来ています。

しかし、他のマシンからphpにて接続しようとすると、

Warning: mssql_connect(): message: ユーザー 'sa' のログインに失敗しました。
理由 : SQL Server の信頼関係接続に関連付けられていません。 (severity 14)
in c:\program files\apache group\apache\htdocs\com.php

とエラーが出てしまいます。
そのマシンからは、Accessなどでの接続は可能です。

解決策が見当たらないのですが、どなたかご存じないでしょうか。
809NAME IS NULL:2007/01/24(水) 18:49:47 ID:XZ2h3Vml
上司に次の原因を調べてくれと頼まれたことなんですが、

「SQLServer2000で主キーはってるのに、キーが重複したレコードができることがある」

ってそんなわけのわからんことあるんですか?
また再現するのが難しく、ただ一度そうなったサーバは癖づいてよくなるとのことです。
ググってみたけど、全くわかりませんですた。
810NAME IS NULL:2007/01/24(水) 19:04:27 ID:???
>>809
はははこやつめ、俺も初耳。
主キーのつもりがただの非ユニーク索引だとか、他の表とJoinしてるから当たり前だとか、
DBよりアプリを疑ったほうがいいと思う。とにかくその上司の勘違い。
あえてあげれば索引を一時的に無効にする運用をしてて戻すのを忘れるくらいかのう。
811Six Perfections:2007/01/24(水) 21:12:42 ID:5G35Yl/d BE:798811294-2BP(0)
812NAME IS NULL:2007/01/25(木) 00:16:22 ID:???
>808
だから、Windows認証になってるんじゃないの?

>809
表結合して結合の相手が複数レコード出てくるようなクエリを実行してるんだと思う。結合条件が抜けているとか。
さすがに主キーで重複した状態は作れないだろ。
813NAME IS NULL:2007/01/25(木) 00:26:25 ID:???
>>808
なんか曖昧だなあ。

WinXP 上で動作している Access のアプリケーションから Win2k3 の SQL2k には sa でログインできるけど、
WinXP 上で動作している Apache の php Web アプリケーションから Win2k3 の SQL2k に sa でログインしようとすると
エラーになるってこと?

だったらその php スクリプトをコマンド プロンプトからスクリプト ランタイムを使って実行してみたらどうなる?
多分動くと思うんだけど、そうしたら Apache が動作している実行ユーザーをドメイン ユーザーにするか
Win2k3 の SQL2k に対して Apache が動作している実行ユーザーのログオンを許可すればいいんじゃね?
もしくは SQL2k の認証モードが混合モードになってないとか。デフォルトは確か Windows 認証だよね。

php はよく知らないけど、mssql_connect って先に Windows 認証でログオン試行をしたりとかするのかな。
814809:2007/01/25(木) 07:18:07 ID:duvWp6HK
ですよね。。
もしその状態が再現できたらまた報告します。
815NAME IS NULL:2007/01/25(木) 09:25:48 ID:duvWp6HK
少し情報の追加です。

@アプリでSelectをしたら「テーブルがこわれています」と出力された。(ADO)
AIndexを再構築しようとしたら、「キーが重複しています」となり再構築できなかった。
Bテーブルを調べてみたら主キーが重複していた。
C主キーを一旦外し、重複行を削除後に主キーをはりなおした。

とのことです。緊急であったためハードコピーなどはのこっていないそうです。
816NAME IS NULL:2007/01/25(木) 10:25:13 ID:???
>>815
主キーの索引が無効になってるか、人為的に無効にした。
無効にした場合クラスタインデックスの場合テーブルが
ロックアウトするのでノンクラスタインデックスを使ってるものと考えられる。
ADOのエラーはSQLServerからの直接のものではなくADOが出している2次的なものでは。
ハード障害などの影響で無効になる可能性もゼロではないが低いうえログに残る。
索引再構築が容量不足などで失敗した場合。
bcpによる一括ロードで索引を一時的に外す運用をしていて、
ロード後データのダブりなどで索引の再作成に失敗した場合。
817NAME IS NULL:2007/01/25(木) 20:13:27 ID:zpmvLODW
すみませんが、相談させてください...

さきほどMicrosoft SQL Server 2005 Express Edition with Advanced Servicesをインストールしたのですが、
Management Studio Express の日本語化が中途半端です。(英語の箇所も多いです)

XpSP2 / Pen4 3G / Memory 1G    です。
ちなみにデフォではないドライブにインストールしました。



これは仕様なのでしょうか...?
818NAME IS NULL:2007/01/26(金) 00:49:04 ID:plGi8grs
>>809
一意な非クラスタ化インデックス付きテーブルに重複行が挿入
http://support.microsoft.com/kb/300959/ja

これならあるけど、主キーではないんジャマイカ。
しかしこんなバグあったくらいだからあっても不思議ではないかも。
819NAME IS NULL:2007/01/26(金) 02:22:03 ID:???
>>818
それSQLServer7の話だが、やっぱりblukcopy周りの障害のようだ。
バグにしろ人為的なミスにしろ何か起きるとしたらbulkinsertの時が一番怪しい。
820NAME IS NULL:2007/01/26(金) 22:13:39 ID:???
>>817
Developer Edition を使っているけど、

・英語になっている場所
・どんな英語になっているか
・ダウンロードした URL

を教えてくれれば、俺のがどうなっているかは答えるよ。
821NAME IS NULL:2007/01/26(金) 22:17:04 ID:???
>>817
英語で何か支障でも?
822817:2007/01/26(金) 23:30:23 ID:3Gq5PlQH
>>820
ありがとうございます。

>>821
僕は日本語のほうが読むの速いです。



自己解決したのでいちおう。
http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=697319&SiteID=7
に出てました。

インストール場所が絡んでるぽいです。
根本的には解決してないのですが、おとなしくCドライブにしました。



なんだかなー
823NAME IS NULL:2007/01/27(土) 00:28:10 ID:???
>>822
C以外に入れると引っかかるのか。
うちの会社も開発環境では必ずパーティションを分けてDに入れるようになってるから踏みそうだ。
824822:2007/01/28(日) 12:03:14 ID:CIyPdD9c
>>823

マシン環境が悪かったかのもしれないし、断定はできませんが・・・。

僕の会社でもC以外に入れることが多いのでガッカリしました。
今回は幸い、自宅PCだったので助かりました。

Enterprise Edition の入ったサーバが何台かあったと思います。
C以外のドライブに入ってるか見てみますよ。
825NAME IS NULL:2007/01/28(日) 18:21:44 ID:???
ログも読まずにいきなりおしえてくんなんだけど
SQL Server 2005 でDDL 文もロールバックできるんだけど
これって大丈夫なの?
826NAME IS NULL:2007/01/28(日) 18:31:47 ID:???
>>825
ホントだ知らなかった。2000はどうなんだろう。
827825:2007/01/28(日) 21:32:12 ID:sj+FZ9mk
2005からだと思う
ところでOracleと同じようにスキーマーの機能が追加されたの
知ってる?
デフォはdboネ
828NAME IS NULL:2007/01/28(日) 22:40:28 ID:???
>>827
SQL Server 2000でもDDLのロールバックができる。
スキーマはSQL Server 2000から使えたがユーザー名(ログイン名とは別)=スキーマ名で固定だった。
それで何にでも dbo.のプレフィクスをつける習慣があった。
829NAME IS NULL:2007/01/29(月) 19:12:07 ID:???
クエリ用にエスケープするphp用の関数ってないんでしょうか?

sqlite_escape_string
とか、
mysql_real_escape_string
のように。

エスケープの仕方がわからず困っています。。。
830NAME IS NULL:2007/01/29(月) 19:38:22 ID:???
>>829
なぜパラメータクエリを使用しないの?
エスケープよりぜんぜん確実だし。
831NAME IS NULL:2007/01/29(月) 19:50:36 ID:???
PHPはDBごとにモジュールも関数の体系も違ううえ、
MSSQL用のは古いDBLibをベースにしてるからADOから使う場合ともちょっと違ったりするんだよね。
シングルクオーテーションを2回ダブるようにすればいけたと思うから自作したら?
832NAME IS NULL:2007/01/29(月) 23:03:07 ID:???
SQL Server 2005 SP2 っていつごろ出そうなの?
833NAME IS NULL:2007/01/29(月) 23:04:10 ID:???
dllのロールバック関連で便乗。

ログをログテーブルに出したいけど
oracleみたいな自律型トランザクションとか無いですよね。
select into はddl扱いでロールバックされないだろうとか思ったら見事にロールバックされるし。

・主処理のロールバックによってログがロールバックされない
・ログのコミットが主処理に影響を与えない
てのがやりたいんですが、なにかうまい方法はありますか?
834NAME IS NULL:2007/01/29(月) 23:14:03 ID:???
>>833
君は根本的な発想が間違っている
先ずSQL Server はOracleではないって事
ところでオルガン占いのオラクル後藤さんって知ってる?(もう亡くなっているけど)
835NAME IS NULL:2007/01/29(月) 23:25:55 ID:???
簡単なのはセッションをもう一個張る。
836NAME IS NULL:2007/01/30(火) 09:03:51 ID:???
>>834
オルガン占いじゃなくて
アコーディオン占いじゃネ?
837791:2007/01/30(火) 17:52:24 ID:???
回答くださった方、ありがとうございます。
どうにも状況が改善しません。
環境を少し変えてみたので、改めて質問させてください。

■Webサーバ 192.168.0.40
OS:WinXP home
Apache2.0
PHP5.0

■DBサーバ 192.168.0.100
サーバ名:DB01
OS:WinXP Professional
DB:SQLserver Personal
混合認証モード
Apache2.0
PHP5.0

上記の環境で、DBサーバに接続を試みています。
DBサーバ内に立てたApacheからは、接続が可能です。

php内の記述が、
$db_connect = mssql_connect ("192.168.0.100\DB01","sa","db_password");
の場合、

Warning: mssql_connect(): Unable to connect to server: 192.168.0.100\DB01
in c:\program files\apache group\apache\htdocs\index.php on line 7
データベースサーバに接続できません

とのエラーが出てしまいます。
php内の記述を、
$db_connect = mssql_connect ("192.168.0.100","sa","db_password");
とすると、

Warning: mssql_connect(): message: ユーザー 'sa' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。 (severity 14) in c:\program files\apache group\apache\htdocs\index.php on line 7

Warning: mssql_connect(): Unable to connect to server: 192.168.0.100 in c:\program files\apache group\apache\htdocs\index.php on line 7
データベースサーバに接続できません

とのエラーになってしまいます。

ファイアウォールの設定などは問題ないと思います。
1433ポートは空ける設定にしています。

よろしくお願いします。
838NAME IS NULL:2007/01/30(火) 18:09:57 ID:???
Personal ってリモートから接続できんの?
839NAME IS NULL:2007/01/30(火) 18:33:47 ID:???
php.ini の mssql.secure_connection の値は? PHP 知らんけど、これ、
統合認証を使うかどうかだよね?
840791:2007/01/30(火) 18:34:24 ID:???
>>838
え。。。
できないんですか・・・?
841791:2007/01/30(火) 18:40:20 ID:???
>>839
ありがとうございます。
確認したら、OFFでした。
842791:2007/01/30(火) 18:58:07 ID:???
>>838
そういうことだったみたいです。
お騒がせしました・・・。

ありがとうございました。
843NAME IS NULL:2007/01/30(火) 22:34:03 ID:???
>>838
MSDEだってリモートから接続できるんだから、できるんじゃないの?
ライセンス上、接続していいのかどうかは知らんけどw

>>837
「信頼関係接続に関連付けられていません」と言われるってことは、
Webサーバ側からは統合認証でつなごうとしてるんじゃないの?

とりあえず DBサーバにある osql.exe を Webサーバ側にコピーして、
osql -S192.168.0.100 -Usa -Pdb_password
で 1> と表示されることを確認すべし。抜けるには quit。
844NAME IS NULL:2007/01/31(水) 23:53:57 ID:???
Personalにリモートから接続した事あるから、出来るはずだよ。
OSはWindows Server 2003 Standard Editionだったけど。

SQL Serverに関しては、ライセンス的にも問題無いんじゃないかな?

ただ、OSがXPだとDBやWebサーバーとしての使用は
OSのライセンス違反だったような気がする。
845844:2007/01/31(水) 23:57:12 ID:???
あ、ごめん。
791さん接続出来たって書いてあるね。
ちゃんと読めてなかった。
846NAME IS NULL:2007/02/01(木) 01:47:53 ID:???
>>836
いや、確か、座って両手で弾いていたような記憶がある
だけど、アコーディオンも使っていたかも知れないです
ところで、エクセルのテーブル定義書からDLLを吐くマクロ作ったけれど
使うのがいまいちめんどくさいのです
ぶぅいぶぃーどっとねっとで作ろうとしたら簡単ですか?
なんか、DataGridView にComboBoxつくって、息切れしているんですけど
テーブルは100本以上あります(多分)
847NAME IS NULL:2007/02/02(金) 10:39:50 ID:???
>>846
そのDLLについてkwsk

・・・DDLだよな?
848NAME IS NULL:2007/02/02(金) 16:57:21 ID:???
なんとExcelがRADツールに!
849NAME IS NULL:2007/02/03(土) 08:45:31 ID:I6+2iOwz
sqlserverでテーブル定義を見たい
oracleのdescに相当するコマンドってなに?
850NAME IS NULL:2007/02/03(土) 10:49:48 ID:???
>849

sp_help
851NAME IS NULL:2007/02/04(日) 07:10:25 ID:JZQOpCFH
しょぼい質問で申し訳ないんですが・・

やりたいこと:ADO接続で、
いくつかのテーブルをロックする
→すでにどれかがロック済みならエラー返す

oracleのfor update nowait
に相当するSQLはSQLサーバーにはないんでしょうか?

ストアドではやりたくないし・・・
852NAME IS NULL:2007/02/04(日) 13:11:55 ID:???
853NAME IS NULL:2007/02/04(日) 14:40:42 ID:???
>>851
SET LOCK_TIMEOUTで適当な時間のタイムアウトを設定する。
2005以降ならOPTION(NOWAIT)が使えるが、SET LOCK_TIMEOUT 0 と同じ意味なので注意。
すばやくロックをかけてすぐに開放するのが共有ロック式のセオリーだから、
SET LOCK_TIMEOUTで100ミリ秒以上は待ったほうがいい。

OracleにしろSQLServerにしろ通常のデータ操作でNOWAITが必要になるのは
なにか設計や考え方がおかしいと思われるので見直したほうがいいだろう。
854NAME IS NULL:2007/02/04(日) 16:26:22 ID:???
>>848
なんかエクセルのマクロでマージャンゲームまであるよ
エディターのマクロでテトリス作っちゃう人もいたし
ところでsp_helpの出力をうまくエクセルに取り込む方法知りませんか?
しょうがないからテキストベース固定長として取り込むマクロ作ったけど
もっといい方法あるはずなんだよね
855NAME IS NULL:2007/02/06(火) 00:44:38 ID:???
すいません
どなたか教えていただけませんか

現在、SQLサーバの更改があり、旧サーバから新サーバにデータをコピーする必要があります。
付属のデータコピーウィザードを使用しコピーを試みたのですが、
以下のエラーがおこりコピーが出来ません

ステップ エラー コード: 80004005
ステップ エラー ヘルプファイル:sqldts80.hlp
ステップ エラー ヘルプ コンテキスト ID: 1100

下記のサイトによると

コピー先の SQL Server がドメイン アカウントで起動されており、
そのアカウントがコピー元のコンピュータのローカル管理者特権を持っていない場合は、ウィザードで
次のエラー メッセージが表示されることがあります。

とあるのですが、ドメインアカウントとはインストールの時にドメインを指定した時のユーザでよろしいのでしょうか?
またローカル管理者権限とはコピー元のアドミニストレータ権限でよろしいのでしょうか?

またコピーウィザード中にコピー元のローカル管理者を指定する項目がないように思えるのですが、
どこで指定をすればよろしいのでしょうか

856855:2007/02/06(火) 00:49:09 ID:???
すみません
環境を書くのを忘れてました。

移行元サーバ
OS:Windows2000Server
ソフト:SQLServer2000

移行先サーバ
OS:Windows2003ServerR2
ソフト:SQLServer2000

ハード更改のためソフト環境は同じです。
なお、参考にしているのは下記サイトです。

よろしくお願いします。

参考サイト
http://support.microsoft.com/kb/274463/ja
857NAME IS NULL:2007/02/06(火) 17:19:05 ID:???
参考先サイトを見ずにレス

> とあるのですが、ドメインアカウントとはインストールの時にドメインを指定した時の
> ユーザでよろしいのでしょうか?

インストール時に指定したサービス起動アカウント。
サービスの設定で変更できる。

> またローカル管理者権限とはコピー元のアドミニストレータ権限でよろしいのでしょうか?

そう。ドメインユーザーアカウントを Administrators グループに入れればいいと
思われ。
858NAME IS NULL:2007/02/06(火) 22:32:16 ID:???
>>855
ACについては詳しくないけど
新しいサーバーのアカウントを
古いサーバーのドメインに登録してあげればよいのでは?
エラーの内容は
新しいサーバーが古いサーバーからデータを取ってこようとしたら
古いサーバーに入れずに怒られたという事だと思うんだけど...
859855:2007/02/07(水) 00:38:06 ID:RBDOyVWh
たびたびすいません
現在、移行先(新サーバ)のインストール時に指定したアカウント、移行先のAdministratorのアカウント、移行元のAdministratorのアカウント
はすべて同じ物を使用しております。

>>そう。ドメインユーザーアカウントを Administrators グループに入れればいいと
>>思われ。

上記がよく分からないのですが、移行先と同じアカウント、同じパスワードをもつアカウントを移行元サーバに作成するのでしょうか
ネットワークパスのような物で移行先のアカウントを指定するのでしょうか?
例えば "コンピュータ名¥アカウント名"のような指定の仕方をローカルサーバに指定するのでしょうか

よく分かって無くてすいません
よろしくお願いします。
860NAME IS NULL:2007/02/07(水) 01:13:23 ID:???
>>859
> 現在、移行先(新サーバ)のインストール時に指定したアカウント

具体的には? まずそれを書こうね。あと、コピー元のサービス実行アカウントも。

> ネットワークパスのような物で移行先のアカウントを指定するのでしょうか?
> 例えば "コンピュータ名¥アカウント名"のような指定の仕方を

違う。ドメイン\アカウント名 というドメインユーザーアカウントを利用しているのなら、
コピー元にそのユーザーが必要、ってこと。
861855:2007/02/07(水) 01:35:13 ID:???
うまく伝えられてないようで

例えば、SQLサーバをインストールしたときに指定したドメインアカウントをtestとすると
移行先のサーバにもtestと言うAdministratorのアカウントも作っておりますし、
移行元のサーバにもtestというAdministratorのアカウントも作成しております。

上記のようにそれぞれのサーバで同じアカウントを指定するだけでよろしいのでしょうか

コピー元のサービスアカウントはおそらくローカルシステムでインストールされているのではないかと思われます。
862NAME IS NULL:2007/02/07(水) 01:37:04 ID:RBDOyVWh
>>コピー元のサービスアカウントはおそらくローカルシステムでインストールされているのではないかと思われます。
上記に関しては前任者と連絡が取れず確認できておりません、資料も見つからないのです。
863NAME IS NULL:2007/02/07(水) 01:45:56 ID:???
>>861
ドメインについてもう一度勉強しなおしてからこい。

ドメインアカウントってのは、ドメインに所属するアカウント。
例として domain ドメインの test アカウントだったとすると、
domain\test として表わされる。

移行先(PC名 src)、移行元(PC 名 dest)で test ってアカウントを作ったとしても、
それとドメインアカウント(domain\test)は何の関係もない。
src\test、dest\test というユーザーだから。

domain\test が Domain Admin(または、それと同等の権限を持つユーザー)でない限り、
移行元 PC の Administrators グループに所属していないとだめ、ってことだろ。
864NAME IS NULL:2007/02/07(水) 10:51:33 ID:???
雑談ネタで済まないのですが、MSSQL2005でXPath、XQuery使って
多変量データを扱うシステムを構築している方おられますか?
Oracle使うとか、自分で中間処理部分書くとかありますが・・。

目的は大量の不定形のログデータ(数値、文字列)蓄積で、質問の主旨は
パフォーマンスとデータ内の整合性(ロック含)の面について、コメント頂けるとありがたいです。
865NAME IS NULL:2007/02/07(水) 11:36:01 ID:???
XML使うのにパフォーマンスを追求するの?
866NAME IS NULL:2007/02/07(水) 11:37:03 ID:???
日本語が変だったw
パフォーマンスを追求するのにXML使うの?
867NAME IS NULL:2007/02/07(水) 12:22:21 ID:???
>>864
http://www.xmldb.jp/db_contents/xmldb/engineer/engineer_4.html
はもう見てるんだよな?
SQL Serverは蓄積したXMLデータをラクに操作する分には良さそうだけど、
「大量の不定形のログデータ(数値、文字列)蓄積」としては
高速検索や大容量に丸ついてないから、
適切な製品選択とは言えないんじゃね〜の?
868864:2007/02/07(水) 13:00:09 ID:???
>>866>>867
レスどうも。
パフォーマンス追及が目的ではないけど、現実はどの程度のものか上限を知っておきたいなと。
半構造の利便性とパフォーマンスは計算量的にどう見てもトレードオフ関係なのは承知の上です。

ttp://mag.autumn.org/Content.modf?id=20050927174016
とかも見てみました。

際限なく開発費があるならTX1とか使ってみたいですが、自分でミドルウェア書くほうが無難かな。
目に見えるコスト算定が可能であればパフォーマンス上限が分かるしチューニングしやすいし、
それとDB任せにしないで実データ要素のDB上の配置とかXMLの物理構造レベルでの
チューニングすればいいのかな。
自分が対象とするデータは常にスキーマが不定形というわけでもなく、ある程度決まっているけど、
たまに変わる程度なので。

大量に蓄積したいし検索もしたいというのはエゴですな (要求仕様ですが・・)
可能な限りM$SQLで粘って他のベンダに乗り換える方向でがむばってみます。。
869NAME IS NULL:2007/02/07(水) 23:55:00 ID:???
ちょっとお聞きしたいのですが、
INNER JOINを使った場合と普通に結合した場合性能的にはどちらが良いのでしょうか?

SELECT uriage FROM uriage_tbl INNER JOIN customer ON uriage_tbl.user_id=customer.user_id
か、
SELECT uriage FROM uriage_tbl , customer WHERE uriage_tbl.user_id=customer.user_id

ちなみに、INNER JOINのON以下を記述し忘れると外積になってしまうのでしょうか?
870NAME IS NULL:2007/02/08(木) 00:42:39 ID:QnfZrBzz
>864
つまり、それぞれのサーバに同じ名前のアカウントを作ってもコンピュータ側からしたら異なるサーバの
全く別のアカウントのため、権限の問題が発生するということですね

データコピーウィザードはADのあるドメイン環境でないと使えないのでしょうか
871NAME IS NULL:2007/02/08(木) 00:50:40 ID:???
この例だと同じ実行プランになるはずなので変わらない。
結合が複雑になるとJOINをつかった方が結合条件がわかりやすく良いプランが出来る可能性が高い。

2005だとON句なしのINNER JOINは不可、CROSS JOINと書く必要がある。
872NAME IS NULL:2007/02/08(木) 01:09:11 ID:???
>>871
分かりました。ありがとうございます。
JOINを書いたほうが良いということですね。

873NAME IS NULL:2007/02/08(木) 01:09:27 ID:???
>>870
ローカルユーザーアカウント同士なら、AD とかドメインとか関係ない。
だけど、前提が

>> コピー先の SQL Server がドメイン アカウントで起動されており、

だろ?
874NAME IS NULL:2007/02/09(金) 18:38:57 ID:???
SQL Server 2005で、

データベースAにあるfooというテーブルのデータを
データベースBにあるbarというテーブルに随時コピーさせることは可能ですか?

データベースAおよびBにあるほかのテーブルに影響を及ぼさず、テーブルfooとbarのみ
データを一致させたいのですが。
875NAME IS NULL:2007/02/09(金) 19:11:38 ID:???
>>874
可能。

update で dbA.dbo.foo からデータを取ってくればいい。随時、ってことなら、トリガにでも
するのがいいんじゃね?
876NAME IS NULL:2007/02/09(金) 20:28:16 ID:???
今のプロジェクトで、エクセル(VBA)とサーバモジュール(C++)から
同じデータとってくるSQL文発行しているんだけど、
これってやっぱりストアドプロシージャにして1個に纏めたほうが良いんですよね?

877NAME IS NULL:2007/02/09(金) 21:06:43 ID:???
>>876
残念ながらVBAからストアド呼べないよ
878NAME IS NULL:2007/02/09(金) 21:16:45 ID:???
>>877
ADO経由なら呼べるだろ。
879NAME IS NULL:2007/02/09(金) 21:29:11 ID:???
呼べます。で、>>876 への回答だけど、どっちでもいい。
ストアドにすることで、メンテナンスの手離れがいいというメリットを取るかどうか、
ってことでしょ。

単なる SQL なら、ストアドにするメリットってあんまりないし。
880NAME IS NULL:2007/02/10(土) 01:47:06 ID:???
>>877-879
ありがとうございました。
結構長いSQL文で、機能追加のたびに変更されるので
毎回2箇所書き換えるのは大変だなーと思っているところでした。
ただ、SP知ってるメンバーが少ないのでちょっと検討しようと思います。
COMでもいいかな・・・
881NAME IS NULL:2007/02/10(土) 02:04:34 ID:???
SQLをスクリプトファイルなりベタテキストなりにしておけば?
882NAME IS NULL:2007/02/10(土) 23:50:49 ID:???
<<88jあまえはすぐにうちらのことをおいこすよ「
がんばれ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
883NAME IS NULL:2007/02/11(日) 08:56:50 ID:RpZ/vITy
これからSQL Serverを覚えようと思うんだけど、
うちのPCはWinXP home。
まずパソコン買わないとダメ?
今、買い替えるならVist搭載の、どのバージョン以上買えば良いのでしょう。
自宅のそのパソコンで学習しながらデータベース作って、
コピーして会社のパソコンに持っていく事ができますか?
会社のパソコン数台のうち1台、XPproがあれば使えるでしょうか。
884NAME IS NULL:2007/02/11(日) 10:18:07 ID:???
885NAME IS NULL:2007/02/11(日) 21:02:12 ID:???
せっかくレスがついているのに理解できないようであれば、
それは向いていないという事なので
違う道を考えたほうが良いと思います
886NAME IS NULL:2007/02/11(日) 22:05:41 ID:???
>>885
いやっ、違う!
知識が無いのと、知恵が無いのを混同しては駄目です
知識が無い者には知識を与えてあげればよいだけです
知識は与えることが出来ますが、
知恵は与える事ができません
知恵は知識で補うことは出来ません
知恵の無い者に限って
自分の知識を出し惜しみしたりします
正直ムカつきます
>>883
SQL Server はMicrosoft 社の製品なので
そこのホームページを探してみてはどうでしょうか
きっと、それほど出費なしに、勉強が始められますよ!
887NAME IS NULL:2007/02/11(日) 22:09:25 ID:???
>>886 の書き込みより、>>884-885 の書き込みの方が役に立つ件について。
888NAME IS NULL:2007/02/11(日) 23:34:58 ID:???
MSDE とかいいよね。古いPCにぶち込んでデータベース遊びできる。
俺も 500MHz ぐらいの CPUのに Windows 2000 SP4 + MSDE 2000 SP4 で遊んでる。

2005 Express になると .NET必要だったりで重くて萎えるけども、
XP Home が快適に動くPCなら、お遊びには十分だろう。
889NAME IS NULL:2007/02/12(月) 12:07:40 ID:???
SQLServerとOracleの違いって何?
時々お客様に聞かれますがうまく答えられません
890NAME IS NULL:2007/02/12(月) 13:11:16 ID:???
>>889
ベンダが違うだろ。
あと価格とライセンス体系。

MSのソフトウェアだけでシステム構築するなら
SQL Serverの方が良いけど、
他のOSやPerl/PHPとかのスクリプト言語とか
Javaとの連携しやすさみたいなところまで考えなきゃならんなら、
Oracleの方が楽。
891NAME IS NULL:2007/02/12(月) 13:53:25 ID:???
>>889
Oracle:メジャーリーグ
SQLServer:プロ野球
892NAME IS NULL:2007/02/12(月) 15:06:25 ID:???
>>891
マルチバイト対応なんて深く考えていないところは
「Oracle = メジャーリーグ」
と言っても良いかもしれんなwww
893NAME IS NULL:2007/02/12(月) 15:32:24 ID:???
OracleにできてSQLServerにできないことってなんですか?
すべてMS関連でシステム作るとして。。
894NAME IS NULL:2007/02/12(月) 15:35:11 ID:???
そんなことも調べられないんだったら、SQLServerにしとけ。
895NAME IS NULL:2007/02/12(月) 15:37:42 ID:???
教えてください。データベース コピーウィザードでコピーすると
バックアップJOBとかもコピーされるのでしょうか?

データベース オブジェクト<INDEX情報以外に何が含まれるんでしょうか?
896NAME IS NULL:2007/02/12(月) 19:21:04 ID:???
>>893
PL/SQLの変数や関数引数の宣言に ProductID in MasterProduct.ProductID%type のような記述ができないこと。
897NAME IS NULL:2007/02/12(月) 19:22:21 ID:???
server2003x64にSQLserver2005評価版を入れていたのですが、
評価版の期限が切れるので、Express Editionを入れようと思います。
データベースその他はそのまま使えるものでしょうか。
難しいことはさせていないので、expresseditionで十分なようなのですが。
(データベース自体は以前7.0から移行してきました)
898NAME IS NULL:2007/02/12(月) 22:27:32 ID:???
>>893
select for update
言い訳は色々聞くが、ね。
899NAME IS NULL:2007/02/12(月) 23:20:45 ID:???
>>897
大丈夫でしょう。
900NAME IS NULL:2007/02/13(火) 00:01:58 ID:???
>>893
>>898
この手の話題は荒れるもとだから隔離スレでたのむ
Oracle>>>>>>SQLServer
http://pc10.2ch.net/test/read.cgi/db/1057151330/l50
901NAME IS NULL:2007/02/13(火) 04:24:24 ID:9r46V504
すいません お尋ねしますが
会社のPC(XP)にSQL SERVER2005を
インストールしたいのですが
ネットワークの検索に引っかからないようにする事はできますか?

誰にも見つからずひっそりとDBの勉強がしたいのです
しかしLANケーブルを抜いてしまうと困るし
なにかいい知恵があれば教えてください 
902NAME IS NULL:2007/02/13(火) 07:32:59 ID:???
>>901
セキュリティの構成ツールを使って設定しない限り外から見えたり接続は出来ないはず。
開発版やExpressはそうなってる。
903NAME IS NULL:2007/02/13(火) 09:00:53 ID:???
>>901
つ「Personal Firewall」
904NAME IS NULL:2007/02/13(火) 15:20:44 ID:9r46V504
>>902
なるほど やはりそうですか
どうもありがとうございます
905901:2007/02/13(火) 16:41:16 ID:9r46V504
リモート接続の許可をOFFにしたら
ほかのPCから見つからなくなりました
ドメインではなくローカルでインストールいたしました
無事解決です
ありがとうございました
906NAME IS NULL:2007/02/13(火) 16:49:03 ID:???
CSVファイルにMicrosoft Text Driverでアクセスしています。

SELECT HOGE_ID FROM HOGE_TABLE
WHERE HOGE_NAME LIKE '%HOGE%'

として検索しているのですが、大文字小文字の区別とかを
なくした検索をしたいのですがなにか良い方法がありますでしょうか?
ご教示よろしくお願いします。
907NAME IS NULL:2007/02/13(火) 20:18:59 ID:???
>>906
JET使えwww
908NAME IS NULL:2007/02/13(火) 22:01:39 ID:???
>>906
渋いねぇ。
909906:2007/02/14(水) 09:26:47 ID:???
すみません。UCASEという関数がありました。

SELECT HOGE_ID FROM HOGE_TABLE
WHERE UCASE(HOGE_NAME) LIKE '%HOGE%'
910NAME IS NULL:2007/02/15(木) 15:14:01 ID:8aFDwjm4
小平市立第十三小学校(小平市小川西町1−22−1) http://www.kodaira.ed.jp/13kodaira/
九条幼稚園(郵便番号: 550-0027 大阪市西区九条2-19-18) http://www.ocec.ne.jp/yochien/kindergarden/kujo/index.html
四番町保育園(〒102−0081 千代田区四番町11番地) http://hothot.city.chiyoda.tokyo.jp/yonbantyou-hoikuen.htm
少友幼稚園(〒310-0024 水戸市備前町5−36) http://www.ii-kids.net/member/mito/member38/
南幼稚園(郵便番号:542-0081 大阪市中央区南船場3-2-19) http://www.ocec.ne.jp/yochien/kindergarden/minami/index.html
M m M m M m ...(Austria) http://www.vs-st-andrae.ksn.at/chronik/2004/buchstaben.htm
南立誠幼稚園のホームページ(〒514−0003  津市桜橋2丁目39) http://www.res-edu.ed.jp/y-minamirissei/
中保育園・はるのさんぽ(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/hot/h17/sanpo/sanpo.html
中ほいくえん(〒480-0100 おおぐちちょうこぐちあざやま中28ばんち) http://www.gojo-sakura.com/gov/hoikuen/naka/
中保育園・園紹介(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/en.html
中保育園・春の遠足(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/hot/h18/harunoennsoku/harunoennsoku.html
小市保育園のホームページ(〒537-0001 大阪市東成区深江北1丁目9番12号) http://koichi.hoikuen.to/
西戸山幼稚園(〒169-0073 新宿区百人町4-7-1) http://www.city.shinjuku.tokyo.jp/division/558400ntoyama-y/
赤川小学校(〒041-0804 函館市赤川町367) http://wwwa.ncv.ne.jp/~akagawes/
黒小っ子花まるっ!(〒013-0826 横手市黒川福島59) http://park1.wakwak.com/~kurosho/kurohana1.htm
911NAME IS NULL:2007/02/15(木) 15:15:27 ID:8aFDwjm4
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/130

(↓1024byteちょうど)
uddlug.V.Yud.Vdldlabbe.Vgwud.Vdlacudc,dlug.Sgwab.Sis.S.V.Kudc,c,c,gw.Kgwbebeacugud.Kgwac.T.Sdlac.K.V
.Tugudugbedlc,is.Tab.Tabgwbe.Tud.Tbe.S.Kisgwugabbe.Sis.Kdl.Tud.Tudgw.V.Tugacugud.T.Vabug.K.Ygw.K.S.Y
ug.Ygwab.Y.V.Visbeud.Sudabc,.Yc,is.Tac.Sdl.Kis.Vugc,ug.Kug.Tis.Ygw.Yudugbe.K.Tisgw.Sdlugacudug.Ybegw
.Sdlbeugab.Vc,dlgwdl.V.Vdlab.Kgwab.T.K.Sgwc,.Kdl.Tacis.Tgw.Kdl.V.Yc,.Sc,.V.K.Kugacudc,abc,.T.Kacac.Y
.V.Y.Tacugc,.Yisug.Yududbeudc,.Kbeacacugbebeabababudc,.Vc,c,beug.S.Kisdlug.T.V.Tacudabisbe.Tugis.Vab
isc,.Tacudab.Vc,.V.K.S.Vbeacac.T.S.Kisbegwbeab.K.Y.S.Sab.Kudab.S.Yugc,ab.T.Tacac.Vab.Yugbeud.Vdlbe.S
dlgwudug.Sis.Kisabgw.Vab.Yc,.Y.Kc,.Y.V.Yis.Tgwudbedl.T.T.Kugc,abbeacbec,.Y.Sab.Kudab.Yisbeabacabisab
ug.V.T.Tud.Kud.V.Vgwgwgw.Sug.Tugbe.Kabdlabudab.Kudug.Tbe.Vug.Tuddl.Sudis.Kisudc,.Vud.Sdlc,gwbe.Tisc,
c,ab.V.V.Sisdldlud.S.Sc,ugug.S.Kacug.Tc,.Kacc,.Vgw.Visabc,.T.Tug.Tc,.Sgw.V.Vc,ugdl.Tdlacgwabud.Sdl.Y
udisgwdlc,c,.Ydlugugud.Kisugud.Ydludis.Y.S.Kugud.Tac.Vdl.Tudacudug.Tis.Vdlisgwgwbe.V.Vis.Tis.Kugc,dl
ud.Y.Y.Yududbeabdl.Sacab
912NAME IS NULL:2007/02/15(木) 15:17:24 ID:8aFDwjm4
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/5

(↓1024byteちょうど)
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
ンンンンンンンンンンンン
913NAME IS NULL:2007/02/16(金) 14:07:28 ID:oNR5BaBg
コテタン処理スレッド
http://music7.2ch.net/test/read.cgi/nika/1171180941/161

(↓1024byteちょうど)
As.K.Y.Yc,beisbedl.Visbeug.Y.Tugc,isc,dlgwisis.Y.Vgwudgwdlududab.Tbe.T.Y.Tac.Yc,dlis.Y.Vc,beud.Yacdl
c,.Kc,dlbebe.V.Vabdlbegwgw.T.T.Sabud.Sisbe.Y.K.S.Tbe.Kgwgw.Yac.Kabugabugacdl.Vabc,dl.K.Y.Tbe.Tisabug
abudab.Kacug.K.Sugudacab.S.V.Tud.Tudisabababugdlacabdldl.Tab.Sbe.Kabac.Sgw.Y.Ybegw.K.K.Yac.V.Ygwacc,
.Yacuddl.Tacc,.Yisug.Kgwdlacugdlbe.Yudbeabacisudacabgwisug.V.S.Kc,.Kurgwdlabdluggwisab.S.Y.Sugac.Kis
udgwbe.Sc,.Tugc,abug.T.S.Ydlacacac.S.V.Visabis.Yac.Sc,ud.Sis.Tug.Sisac.5195017beabgwuddlac.Sdludacug
.Kac.Sabis.Tududisisabdl.Sudugacab.T.Kac.S.Sdl.V.T.Sdlbec,beugc,ac.Tudac.Sis.K.T.Tc,c,.Sacac.Tgwc,.T
.Tgw.Tgwbebe.V.K.Tabis.Vbe.Tdlc,ugbeabc,ab.Sc,acud.Y.K.Tbe.Tabbe.V.V.Visdlis.Tgwgwugabbeisabacabbec,
bec,is.Yacacc,.4008189293167387674549692477721754759147630482871555452004979915517366420175711acugbe
.Ygw.Vgw.Kac.Tacbe.K.Kgw.Ybe.S.Ydl.K.Sdlgwisis.Y.K.K.K.Tac.K.Kdlabugab.Tbe.T.K.Yc,dl.Kisisbeudgw.Sbe
gw.Sbe.Vududgwud.K.Vdl.K.Vis.Y.V.Tgwugac.Sc,ac.Tgw.Vacisis.K.Ybeugdl.Vab.S.Tab.Y.S.Kugacgw.V.V.Kug.T
udc,isug.Tdl.V.Kdlacbea.
914NAME IS NULL:2007/02/16(金) 14:08:32 ID:oNR5BaBg
中■■■(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/

中■■■(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/en.html

中■■■(〒480-0100 大口町小口字山中28番地) http://www.gojo-sakura.com/gov/hoikuen/naka/hot/h18/harunoennsoku/harunoennsoku.html

中■■■(〒480-0100 大口町小口字山中28番地)
http://www.gojo-sakura.com/gov/hoikuen/naka/hot/h18/harunosannpo/harunosannpo.html

M m M m M m ...(Austria) http://www.vs-st-andrae.ksn.at/chronik/2004/buchstaben.htm

西■■■■■(〒169-0073 新宿区百人町4-7-1) http://www.city.shinjuku.tokyo.jp/division/558400ntoyama-y/

赤■■■■(〒041-0804 函館市赤川町367) http://wwwa.ncv.ne.jp/~akagawes/

黒■■■■■■■■(〒013-0826 横手市黒川福島59) http://park1.wakwak.com/~kurosho/kurohana1.htm

第十三■■■(〒187-0035 小平市小川西町1-22-1) http://www.kodaira.ed.jp/13kodaira/

四番■■■■(〒102−0081 千代田区四番町11番地) http://hothot.city.chiyoda.tokyo.jp/yonbantyou-hoikuen.htm

南■■■(郵便番号:542-0081 大阪市中央区南船場3-2-19)
http://www.ocec.ne.jp/yochien/kindergarden/minami/index.html

少■■■■(〒310-0024 水戸市備前町5−36) http://www.ii-kids.net/member/mito/member38/

九■■■■(郵便番号: 550-0027 大阪市西区九条2-19-18) http://www.ocec.ne.jp/yochien/kindergarden/kujo/index.html

南■■■■■(〒514−0003 津市桜橋2丁目39) http://www.res-edu.ed.jp/y-minamirissei/

小■■■■(〒537-0001 大阪市東成区深江北1丁目9番12号) http://koichi.hoikuen.to/
915NAME IS NULL:2007/02/16(金) 14:17:39 ID:GH/Xe65t
1 :おさかなくわえた名無しさん :2007/02/15(木) 22:37:20 ID:gIZCPGDM
962 名前:おさかなくわえた名無しさん[sage] 投稿日:2007/01/12(金) 06:52:38 ID:0wf1ypQR
最近近くに越してきた一家の夫が、どうやらコンクリ殺人の犯人らしい。
すでに町内はパニック状態で、
署名を集めて出て行かせようとしたり、その一家には何も売らなかったりとかなりの差別っぷり。
私はひょんな事からコンクリの奥さんと話すようになったんだけど、
引っ越しても引っ越してもストーカーのように追いかけ続ける人が何人もいて、移り住んだ地域の人達にソース付きでバラしてしまうらしい。
そしてそれは妻が子供を連れて別居しても続いてしまうので、離婚もできないらしい。

23 :おさかなくわえた名無しさん:2007/01/13(土) 11:33:58 ID:1ooRv/+3
前スレ962だけど、
全部本当だよ。日本も捨てたものじゃないね。
昨日、家にコンクリの奥さんから電話かかってきて、
「私たちの事、掲示板に書いたでしょう!」って言われた。
生活板住人だったみたい。
「どうなるかわかってるでしょうね!」って言われちゃったから、もうすぐコンクリにされちゃうかも。

63 :おさかなくわえた名無しさん:2007/01/13(土) 18:35:59 ID:1ooRv/+3
>>57
石川県。田舎を転々としてるみたい
リストの名字と一致しないから、たぶん婿養子なんだろう。
中学生の娘がいるからたぶん最後の人。仕事はしてないっぽい。
あと>>53、引っ越してきて直ぐの時にストーカーにそれやられてた。
ついでに市のサイトのBBSにも書かれてたよ。

5 :おさかなくわえた名無しさん :2007/02/15(木) 22:39:15 ID:gIZCPGDM
この事件を知らない方はここにあります。多分冗談だろ?と思いますが事実です。
これがあの震撼させた事件です
http://tokyo.cool.ne.jp/maromi/pic/jyoshikouseiconcretehannninnpic.htm
http://www5e.biglobe.ne.jp/~rolling/concrete.htm
http://2ch-library.com/news/concrete/

さらに恐ろしい事に主犯・宮野は2月2日に出所済。近郊の方、要注意!
916NAME IS NULL:2007/02/18(日) 01:12:57 ID:???
下のような計算機システムを作っています。

DBサーバ→制御サーバ→各計算機


制御サーバは
DBから取得したデータをテキストファイルに落として
各計算機に投げ、それを受けた計算機があくまでも受動的に計算を行うのですが
この場合も各計算機にCALはいるのでしょうか?

上の人は、各計算機が制御サーバにリクエストを送るわけじゃないから
ライセンスは要らないといっているのですが。



917NAME IS NULL:2007/02/18(日) 07:11:46 ID:???
>>916
> この場合も各計算機にCALはいるのでしょうか?
マルチプレキシングに相当するか?
が、問題になる。
 ただ、この点をまじめに検討するより、
 デバイスは多いけど、ユーザーが少ない状態なら
>ユーザーまたはデバイスの数だけの CAL (クライアント アクセス ライセンス) が必要になります。
のユーザー CAL でカバーすると、プログラムを修正した場合でも問題ないので楽。

 データ量によっては、Express Edition で十分な気もするが。
918NAME IS NULL:2007/02/18(日) 11:17:44 ID:???
オフラインで読めるフリーのTransact-SQLのリファレンスは
ありますでしょうか?

Transact-SQL Reference
(ttp://msdn2.microsoft.com/en-us/library/ms189826.aspx)
がオフラインで読めればいいんですけどねぇ。
919NAME IS NULL:2007/02/18(日) 13:07:28 ID:???
920NAME IS NULL:2007/02/19(月) 21:51:04 ID:???
SQL Server 2000 で次のようなSQLを実行(KOKYAKU_MSTとTEN_MSTには該当データ
があってKOKYAKU_SUB_MSTには該当データがない)すると、該当データ無しになって
しまうとお客さんのとこから連絡がありました。(VBのアプリの中でSQLを実行してます)
社内の環境ではSUB_MSTのとこだけNullになってデータ有りとなります。
お客のところのSQL ServerがSP4(社内はSP3)に変わったそうなのですが、SP4には
そういった現象がでることがあるのでしょうか?
ご存知の方、情報をよろしくお願いします。

SELECT M.*, S.*, T.TEN_NAME
FROM (
KOKYAKU_MST AS M
LEFT JOIN KOKYAKU_SUB_MST AS S ON
(M.KOKYAKU_CODE = S.KOKYAKU_CODE) AND
(M.TORIHIKI_SYUBETU = S.TORIHIKI_SYUBETU) AND
(M.TEN_CODE = S.TEN_CODE)
)
LEFT JOIN TEN_MST AS T ON M.TEN_CODE = T.TEN_CODE
WHERE T.KUBUN='SHITEN'
AND M.TEN_CODE = '1111'
AND M.TORIHIKI_SYUBETU = '1'
AND M.KOKYAKU_CODE = '12345'
921NAME IS NULL:2007/02/19(月) 23:53:22 ID:???
>>920
TEN_MSTをOUTER JOINしたいのならWHERE句に条件書くなよ。
922NAME IS NULL:2007/02/20(火) 07:44:56 ID:???
>>920
特にそういう現象は起きてないな。まずデータや条件を疑うべきだが、
システムを疑う気ならDBCC CHECKDBでもかけてみたら?
923NAME IS NULL:2007/02/20(火) 11:56:25 ID:u5eSYaHv
2000を使ってテーブル作ってるんだけど、
列名にカタカナ使うと[ ]が自動的に付くのは何故?
924NAME IS NULL:2007/02/20(火) 16:48:59 ID:???
>>923
無用なトラブルを未然に防ぐための
要らぬ親切大きなお世話って奴www
925NAME IS NULL:2007/02/20(火) 18:37:42 ID:???
Experess用のSP2は別なのかよ・・・・
ID忘れたからDLすんの面倒だよ
926NAME IS NULL:2007/02/20(火) 20:25:11 ID:???
>>921-922
すいませんでした。
お客さんがマスタのデータを勝手にいじくってました・・。
927923:2007/02/21(水) 10:50:11 ID:???
>>924

それだけのことだったのかw
dクス
928NAME IS NULL:2007/02/21(水) 19:38:12 ID:???
誰かExperess用のSP2うpしてください
929NAME IS NULL:2007/02/21(水) 19:39:45 ID:???
930NAME IS NULL:2007/02/21(水) 20:02:26 ID:???
>>929
昨日はWindowsLiveのIDないとダメだったのに今日は落とせるのね
ありがとう
931NAME IS NULL:2007/02/21(水) 22:49:17 ID:???
>>930 昨日落としたけど別に何も聞かれなかったよ
932NAME IS NULL:2007/02/21(水) 23:20:09 ID:???
もう出たのか SQL Server 2005 SP2 ・・・
Windows Server 2003 R2 SP2 も出るし、サーバーリプレースせにゃあ
933NAME IS NULL:2007/02/22(木) 01:20:39 ID:???
確かに早いな。
934NAME IS NULL:2007/02/22(木) 09:54:40 ID:2bLf0DAK
SQLServer2000を使用しています。
Col1という列のうち、値が半角小文字の s で始まる行を
抽出したいので、SLQ文で

SELECT Col1 FROM hoge WHERE Col1 LIKE 's%'

とすると、小文字のみならず大文字の S も含んだ行を返します。
小文字のみを抽出するにはどのように書けば良いのでしょうか?
935NAME IS NULL:2007/02/22(木) 10:11:53 ID:???
>>934
SELECT Col1 FROM hoge WHERE Col1 LIKE 's%' COLLATE Japanese_CS_AS_KS_WS

つか、データベース作るときは
要件に応じて適切に照合順序設定するクセつけろ。
936NAME IS NULL:2007/02/22(木) 10:15:35 ID:???
>>934
COLLATE Japanese_CI_AS

COLLATE Japanese_CS_AS
に変更。
937934:2007/02/22(木) 10:30:46 ID:???
>>935
>>936
できました、ありがとうございました!
938NAME IS NULL:2007/02/23(金) 17:02:19 ID:???
SQLServer2005で、今DBファイルをおいている場所を別に変更したいんだけど
どういう手順になるんですか? 単にエクスプローラでファイルを移動してパス変更
すればいいのでしょうか。あと、デフォルトで作成される場所も変更したいんですが…

SQL Server Management Studioを触ってたけどさっぱり…
939NAME IS NULL:2007/02/23(金) 19:27:33 ID:???
>>938
データベース ファイルの移動
http://msdn2.microsoft.com/ja-jp/library/ms189133.aspx

データベースのデタッチとアタッチ
http://msdn2.microsoft.com/ja-jp/library/ms190794.aspx
940NAME IS NULL:2007/02/23(金) 22:56:34 ID:???
SQL 2005 SP2のインストールがエラーになるじょ。
941938:2007/02/23(金) 23:05:24 ID:???
>>939
ありがとうございます、まさしくそれです。
月曜に頑張ってみます。
942NAME IS NULL:2007/02/24(土) 12:25:39 ID:???
>>940
俺はMDACが古いって言われた・・・
943NAME IS NULL:2007/03/06(火) 14:01:56 ID:gpz/T0xd
SQLServer2005 で、投げることのできるクエリのバイト数に上限はありますか?
アクセスだと255バイトが上限だったような気がするので。
944NAME IS NULL:2007/03/06(火) 22:45:50 ID:???
>943
ないんじゃないかな?
4000バイトとか8000バイトくらい投げつけたりしても引っかかる様子はなかったし。
945NAME IS NULL:2007/03/07(水) 16:18:09 ID:???
946NAME IS NULL:2007/03/07(水) 22:55:26 ID:???
な、なんだってーー!!
947NAME IS NULL:2007/03/08(木) 00:10:34 ID:???
それでも、漏れの環境では、SP2インストールでエラーになる...
948NAME IS NULL:2007/03/08(木) 01:13:19 ID:???
テーブルを開いたときに、見せたくない(*で表示したい)列があるんだが、
2005に、そんな感じのマスク機能ある?
949NAME IS NULL:2007/03/08(木) 03:21:53 ID:aUi2AJOj
見せたいカラムだけでビュー作れば?
950NAME IS NULL:2007/03/09(金) 13:10:25 ID:???
データーベースのバックアップの構文を教えてください。
backup database

の続きがわかりません。よろしくり。
951NAME IS NULL:2007/03/09(金) 13:24:19 ID:???
>>950
ググれ。
じゃなきゃBOLの中探せ。
952NAME IS NULL:2007/03/09(金) 13:30:45 ID:???
人間グーぐるの異名をとるこのスレに来たのに
ぐぐれはひどいよー
953NAME IS NULL:2007/03/09(金) 19:55:08 ID:jneX7HlS
Windows VistaではSQLServer 2005 SP2を使ったとしてもWindowsの管理者
アカウントでは管理権限が与えられなくなった。
今までインストーラの中でアタッチしていたのができなくなってしまった。
アタッチするための権限を得るために管理者ロールにアカウントを入れて
やらなければならない。つまりDBの自動インストールができない!!!!
インストール後手動で権限与えるなんてやってられるかよ!!!!

VistaとSQL Server 2005の相性は最悪だと思った。
954NAME IS NULL:2007/03/09(金) 22:45:21 ID:???
>>953
Administratorでログオンしても同じ?
955918:2007/03/11(日) 00:23:55 ID:???
>>919
遅レスですいませんが、まさしくそれでした。
ありがとうございました。
956NAME IS NULL:2007/03/11(日) 07:04:02 ID:f9rdgs/+
超初心者です。教えてください。・゚・(ノД`)・゚・
SQLServer2005を入れたのですが、最初のログインでもうつまづいてます。
エラーメッセージはこんな感じです。Windows認証でlocalhostサーバーで入ろうとしたら、エラーが出ました。
OSはXPです。OSにはAdministratorでパスワードなしでログインしてます。

localhost に接続できません。
サーバーへの接続を確立しているときにエラーが発生しました。
SQL Server 2005 に接続しているときときにこのエラーが発生した場合は、
SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。
(provider: 名前付きパイプ プロバイダ, error: 40 - SQL Server への接続を開けませんでした) (Microsoft SQL Server、エラー: 2)
957NAME IS NULL:2007/03/11(日) 07:20:02 ID:???
>>956
サーバー名は .\sqlexpress
958NAME IS NULL:2007/03/11(日) 07:26:59 ID:f9rdgs/+
>>957
レスありがとうございます。サーバ名を[localhost]から[.\sqlexpress]
に変えれば良いのでしょうか?

959958:2007/03/11(日) 09:09:42 ID:f9rdgs/+
別のやり方で解決しました。
960NAME IS NULL:2007/03/11(日) 10:44:07 ID:???
>>959
その方法を書かないまま消えるのか?
961958:2007/03/11(日) 13:31:28 ID:f9rdgs/+
>>960
すいません、そもそもの原因はIISをインストールしないまま、SQL Server2005のインストールを行ってしまい、
途中でエラーが発生した後も、そのままインストール処理を続行していたのがいけなかったようです。
IISを入れた後、再度セットアップした後、SQL Server2005のSP2をインストールし、localhostからでもログインできるようになりました。
(SP2を入れない状態では確認してません。てんぱってました)
962NAME IS NULL:2007/03/11(日) 16:51:44 ID:tg8mXIwA
VS2005、ストアド上のブレークポイントでの止め方教えてください。

以下長いけど詳細。
ローカルのSQLServer2005Developper+VS2005(VSTO)、アプリケーションのデバッグで
ストアドプロシージャのブレークポイントを使ってくれません。
(このドキュメントのシンボルが読み込まれていません、と出てます。
サーバエクスプローラからのストアドの実行とステップインは可能です。)
・プロジェクトのプロパティ、SQLServerデバッグ:有効
・サーバエクスプローラの「アプリケーションのデバッグ」:有効
・同「SQLまたはCLRのデバッグを許可する」:有効
・msvsmon.exe:サービスとしてのログオン権限とAdministrators権限、sysadmin権限を持って稼動中。
・ファイアウォール:切ってある
・私:SQLServerのsysadmin権限あり
・アプリ:私の権限でWindows認証ログオン
・アプリ内容:VB(ADO.Net2.0)からExecuteScalarで「EXECUTE 関数名」だけ。
・SQL鯖はSP当ててないはず。バージョン9.00.1399.06

よろしくお願いいたします。
963NAME IS NULL:2007/03/13(火) 01:20:35 ID:???
IIS 入れないで SQL Server 2005 入れるとマズいのか?
964NAME IS NULL:2007/03/13(火) 06:57:48 ID:???
>>963
IIS は Reporting Services に使われる。レポートは Web ページとして表示するから。
データベース エンジンしか使わないのなら IIS は要らない。
965NAME IS NULL:2007/03/13(火) 08:06:22 ID:???
Oracleとロックの種類とか違うみたいなんですが
SqlServerのロックについて分かりやすいサイトないでしょうか?
966NAME IS NULL:2007/03/13(火) 10:12:45 ID:???
>>965
比較なら共有ロック、マルチバージョニングでググればいろいろ出てくる。
SQLServerのロックの詳細はPOLを見た方が早いと思う。
967NAME IS NULL:2007/03/13(火) 10:22:36 ID:???
typo POLじゃスクエニだにゃ。
BOL = SQL Server Books Online
968NAME IS NULL:2007/03/13(火) 13:17:04 ID:oFtuibL7
SQL server 2005 Express って当然64ビット版ありますよねー
上司がないとか言ってて仕方ないです
969NAME IS NULL:2007/03/13(火) 13:28:39 ID:???
>>968
Express の64bit版はないが使える。64bit WindowsではWOWで動作する。
970NAME IS NULL:2007/03/13(火) 14:44:03 ID:oFtuibL7
>>969
64ビットでも使えるなんて、リアクションとしてワオゥ(WOW)
WOWで動作するってのは、
動作するマシン64ビットだけど、SQLサーバは32ビットで動作するって意味なんですかね
その辺はググっておきます
971NAME IS NULL:2007/03/13(火) 15:03:06 ID:???
その上司に同情するよ・・・
972NAME IS NULL:2007/03/14(水) 00:24:46 ID:???
亀レススマン。

>>943-944

SQL Server 2005 の最大容量仕様 (BOL)
http://msdn2.microsoft.com/ja-jp/library/ms143432.aspx

> SQL ステートメントが含まれた文字列の長さ (バッチ サイズ) = 65,536 ネットワーク パケット サイズ
> ネットワーク パケット サイズとは、アプリケーションとリレーショナル データベース エンジン の間の
> 通信に使用される表形式のデータ ストリーム (TDS) パケットのサイズです。既定のパケット サイズは
> 4 KB であり、network packet size 構成オプションによって制御されます。
973NAME IS NULL:2007/03/14(水) 14:24:03 ID:2/UVaeYi
datetime型に日付のみを入れることは出来ないのでしょうか?
バージョンは2000です。
974NAME IS NULL:2007/03/14(水) 14:33:35 ID:???
>>973
残念ながらANSI互換のDATEやINTERVALはない。
セットするとき0時0分0秒にそろえて書き込もう。

select convert(datetime,convert(char(8),GetDate(),112),112)
975NAME IS NULL:2007/03/14(水) 17:44:39 ID:???
下記のようなSQL文で

SELECT * FROM ::fn_xxxxxx の

::って、どんな意味があるのでしょうか?
976NAME IS NULL
>972
最初、その制限を受けるかなと思ってたけど別に影響受けてる様子がなかったような記憶が。
後で確認しておく。

text型のフィールドをレプリケーションすると4KBごとの境界の2byte文字が破壊されることを思い出した。