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

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

Microsoft SQL Server 総合スレ3【MS SQL】

1 :NAME IS NULL:2005/08/14(日) 10:05:39 ID:diJAGCwi
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

・過去スレ
初代  http://pc5.2ch.net/test/read.cgi/db/1057061513/
2代目 http://pc8.2ch.net/test/read.cgi/db/1093012583/

・SQL Serverホーム
http://www.microsoft.com/japan/sql/

・MSDEの話題はこちらでもやってます
MSDEよりいいDB、ありませんか?
http://pc8.2ch.net/test/read.cgi/db/1063716668/

2 :NAME IS NULL:2005/08/14(日) 10:06:18 ID:???
淡々と1000にいってしまってたのでたてました。
即死回避にご協力ください。

3 :NAME IS NULL:2005/08/14(日) 10:07:34 ID:???
スレタイ、「MS SQL」だけだとMySQLとみまちがえるので一応変えました。
(検索用に一応残してあります)

4 :NAME IS NULL:2005/08/14(日) 10:22:45 ID:???
m9(^Д^)プギャー

5 :NAME IS NULL:2005/08/14(日) 10:32:51 ID:???
乙!


6 :NAME IS NULL:2005/08/14(日) 11:06:28 ID:???
ヾ(*´∀`*)ノキャッキャ

7 :NAME IS NULL:2005/08/14(日) 19:45:31 ID:???
>>1

8 :前スレ992:2005/08/15(月) 00:47:45 ID:???
結局ソースを書き直したらよく分らないうちにDBにアクセスできるようになりました
答えてくれた人ありがとう
そしてSAK万歳

9 :NAME IS NULL:2005/08/15(月) 11:16:44 ID:yAMXf9cW
SQL-Server2000で、DBのバックアップを取りたいんですけど、
ABC-DEF って名前のDBなので、
'-' の近くに無効な構文があります。
とクエリアナライザでエラーになります。

Backup DataBase ABC-DEF TO DISK='C:\WORK\aaa.bak'

どうすればよいでしょうか?
すいません、素人質問ですが宜しくお願いします。


10 :NAME IS NULL:2005/08/15(月) 11:24:40 ID:???
>>9
>Backup DataBase ABC-DEF TO DISK='C:\WORK\aaa.bak'
"ABC-DEF"か
[ABC-DEF]
Books Online
区切られた識別子
を参照のこと


11 :NAME IS NULL:2005/08/19(金) 10:33:16 ID:???
SQL Server 2000 を使用しています。
getdate()で取得した日付をテーブルに更新しているのですが、このとき時間情報を
切り落とす方法がないでしょうか?
つまり、#2005/8/19 10:11:12# を #2005/8/19 00:00:00# としたいのです。

一応、convert()を使って切り落とすことができたのですが、一度文字列に変換して
いるため効率が悪そうな感じがします。

他によい方法がありましたら教えてください。

ちなみにORACLEだとround()でできるようなのですが、SQL Server はダメでした。


12 :NAME IS NULL:2005/08/19(金) 11:22:04 ID:???
>>11
GETDATE() と CONVERT(VARCHAR, GETDATE(), 111) の違いで問題になるほどの効率低下があったのか?
また仮に SQL Server に ROUND に相当する関数があったとして、CONVERT よりその関数の方が
効率が良いと思えるのはなぜ?
妄想だけで何もしていないお前の頭の方がよっぽど効率が悪いだろ。

13 :NAME IS NULL:2005/08/19(金) 12:51:26 ID:???
そろそろANSI SQLの date と interval にあたる年月日のみと時間差を扱うデータ型が欲しいよ。

14 :NAME IS NULL:2005/08/26(金) 06:04:36 ID:???
ユーザ定義関数に関する質問です。
SUM()関数のような集約関数を作りたいのですが、HELPをみても作り方がわかりません
でした。そもそも作れるのでしょうか?作るとしたらどのようにするのでしょうか?
ヒントでもうろ覚えでもいいので、お願いしますm(。_。)m

15 :NAME IS NULL:2005/08/26(金) 07:59:27 ID:???
2005

16 :NAME IS NULL:2005/08/29(月) 00:54:23 ID:???
SQL ServerのCALについて質問です。
後からCALを追加購入するとします。すると、媒体(CD-ROM)か何かが
付いてくるのですか?インストール的な作業は発生するのでしょうか?

クライアントPC側に、何か設定するのでしょうか?
サーバ側に何か設定するのでしょうか?
それとも、サーバにもクライアント側にも、何か追加設定が必要なのでしょうか?

MSのWebを見る限り、的を得た記事がなく、イメージがぜんぜん沸いてきません。


17 :NAME IS NULL:2005/08/29(月) 12:30:28 ID:b6IMjBrb
>>16
CAL購入のレシートが送られてくる

18 :NAME IS NULL:2005/08/29(月) 20:34:35 ID:5h1QjMxz
CALを買うと、何が送られてくるのでしょう?どこに何を設定するのでしょう?サーバ側に設定するのでしょうか、クライアントに何かインストールするのでしょうか? MSDNやTECHNET、リソースキットにも、詳しい説明がまったく見当たらない。

19 :NAME IS NULL:2005/08/29(月) 20:56:07 ID:???
>>18
CD KEYが送られてくるわけではない。CALは何ライセンス持ってますという証明書に過ぎない。
システム的なチェックは何もかけていないので、サーバーにもクライアントにも特に設定することは無い。

20 :NAME IS NULL:2005/08/29(月) 21:52:35 ID:???
>19
ライセンスマネージャが無かったか?
まぁ、あれはイベントログに警告が出るだけだが。

後、カウント方法が間抜けで正しくライセンスに準拠している使い方でも
警告が出るんだよな。

21 :NAME IS NULL:2005/08/29(月) 22:18:34 ID:???
>>20
あれは起動手動にして使わないようにしています。

22 :NAME IS NULL:2005/08/30(火) 10:19:05 ID:EQtVBQof
>17,19,20殿
とても分かりやすい説明、ありがとうございます。
ほとんど「ザル」状態で、アクセスできるのですね・・。

ところで、SQL Serverは何をもって1アクセスとしているのでしょうか。
例えば、VB.NET上で、DBへのコネクション(SqlClientConnection)を
複数定義して、例えば、100接続 同時にOPENした場合、
クライアントは1台にもかかわらず、100アクセス相当とみなされる・・??
こういう事が原因で、20殿のおっしゃるような「カウントが間抜け」状態が
発生しているのかなと、勝手に推測しているところですが。


23 :NAME IS NULL:2005/08/30(火) 12:37:28 ID:DYQfLzMM
Disk I/Oエラーなどの原因でSQLサーバ自身が勝手にサーバをリブートさせるなんてことあるでしょうか?

24 :NAME IS NULL:2005/08/30(火) 12:49:49 ID:???
>>22
半端なプロテクトをかけるとプロテクトをはずしさえすればコピーし放題と思ってるやからが多いから、
ライセンスだけで縛って大口の不正ユーザーを時々見せしめにしたほうが効率がいいのだろう。
1PCだけの運用ならMSDEで無料提供だし、開発用途ならMSDNや開発版が使えるから、
個人レベルの不正ユーザーは計算に入れなくていい。

ディバイスCALなら実際のクライアント装置の数、ユーザーCALなら実際のオペレータの人数で、
同時接続数のCALは既に廃止になってる。ユーザー数不定の場合やユーザー数が多い場合は
プロセッサライセンスにすればCALは不要。ただしWindowsのCALは必要だったりするが(笑)
あとは、この辺をじっくり読んでね。
ttp://www.microsoft.com/japan/sql/evaluation/license/

25 :NAME IS NULL:2005/08/30(火) 12:57:08 ID:???
>>23
SQLサーバ自身がというよりWindows自身がそうすることはありえる。
OS自身やスワップがあるドライブがI/Oエラーの場合はそうなる可能性が高い。

26 :NAME IS NULL:2005/08/30(火) 17:37:01 ID:DYQfLzMM
>>25
コメントありがとうございます。
わたしもSQLサーバー自身がOSに対してリブートコマンドを発行するなんて
聞いたこと無いので考えられないと思っているのですが。。

データ領域やトランザクション領域にアクセスできなくなったとしてもサービ
スが止まるだけで勝手にリブートはしないですよねぇ。たぶん。

27 :NAME IS NULL:2005/09/01(木) 01:26:38 ID:s7BVaerI
トランザクションをしていない状態で
ストアドでselect @@trancountすると2と返ってくるのはなんでですか?

28 :NAME IS NULL:2005/09/01(木) 09:24:18 ID:???
>>27
クエリアナライザで試してみたが普通に0がかえってきた。
create procedure sp_test1 as select @@trancount

29 :NAME IS NULL:2005/09/01(木) 19:04:20 ID:???
>>23
そりゃハードウエアERR検地してOSがリブートしてるだけだよ。
だいたいSQLにそんなコントロールする命令句は無いだろ。

30 :NAME IS NULL:2005/09/01(木) 19:22:12 ID:???
SQL Server 2000 のストアドで Accessのクロス集計クエリみたいなことって実現できますか?

31 :NAME IS NULL:2005/09/01(木) 20:35:01 ID:???
>>30 できるよ

create table tbl (
month decimal(2, 0),
price decimal(10, 2)
)

insert into tbl 1, 110
insert into tbl 1, 200
insert into tbl 2, 100
insert into tbl 3, 200

select
sum(case month when 1 then price else null end) 1月,
sum(case month when 2 then price else null end) 2月,
sum(case month when 3 then price else null end) 3月
from tbl


32 :NAME IS NULL:2005/09/01(木) 20:43:23 ID:???
>>30
SELECT ... WITH COBE や WITH ROLLUP がつかえる。
ビボットテーブルのようなUIが必要ならSQLServerのオプションのOLAP Serviceをあたってくれ。

33 :NAME IS NULL:2005/09/01(木) 20:58:57 ID:???
>>30
Accessのクエリウィザードで作成したクエリをデザインビューで
SQL表示してちょっといじればいいんではないか?

34 :NAME IS NULL:2005/09/02(金) 00:57:38 ID:KMuTh19M
データベースのリカバリをバッチで行おうと思っているのですが、

ALTER DATABASE tmpdatabase SET SINGLE_USER
RESTORE DATABASE tmpdatabase FROM DISK='tmpdatabaseのバックアップファイル' WITH REPLACE
GO

を実行すると、

サーバー : メッセージ 3101、レベル 16、状態 1、行 2
データベースは使用中なので、排他アクセスを獲得できませんでした。
サーバー : メッセージ 3013、レベル 16、状態 1、行 2
RESTORE DATABASE が異常終了しました。

と出てきます。
ALTER DATABASE tmpdatabase SET SINGLE_USER で一応排他制御しているつもりなんですけど...

もう意味が分かりません。
どなたか助けてください。

35 :NAME IS NULL:2005/09/02(金) 06:12:03 ID:???
>>34
データベースに接続時にtmpdatabaseに接続してない?
代わりにmsdeに接続するか、バッチの先頭に
use msde
go
を入れてみるとか

36 :35:2005/09/02(金) 06:21:46 ID:???
>>35
いけね。間違えた。
msde → msdb

37 :NAME IS NULL:2005/09/02(金) 12:19:42 ID:???
Enterprise Manager から、あるデータベースのビューに
表示されるビューのうち、種類がユーザーになっているものを全て選択し、
SQL スクリプトを生成すると、Enterprise Manger では表示されていない
ビューが作成されています(CREATE VIEW)

EnterpriseManager に表示されないのに、スクリプト生成をすると
CREATE VIEW が作られるビューはどうして enterprise manger に
表示されないのかわかりません。アドバイス頂けないでしょうか?


38 :NAME IS NULL:2005/09/02(金) 14:52:40 ID:w/IkuQ5S
34です。

>>35さん。
ありがとうございます。
思いっきりtmpdatabaseで接続してました。
そりゃ使用中ですね。
おかげさまでリカバリすることができました。
ありがとうございます!

39 :NAME IS NULL:2005/09/02(金) 15:23:06 ID:l3RchLMD
MS SQL Server 7を使ってます。

ストアドプロシージャ内でVBA関数のRecordset.
RecordCountや、Recordset.EOFのようなプロパティで
条件を判別したいのですが、それに近いような関数ってありますか?

ストアドプロシージャで使える関数の一覧があれば
何とかできそうなんですが…

40 :NAME IS NULL:2005/09/02(金) 15:47:09 ID:???
>>39
RecordCountならSELECT @@ROWCOUNTで取得できるけど。
別に
 DECLARE @count
 SELECT @count = COUNT(*) FROM xxxx
でもいいが。
関数の一覧はSQL Server Books Onlineに載っているよ。

41 :NAME IS NULL:2005/09/02(金) 17:26:24 ID:???
>>39
100%同じものは無いから、素直にカーソルの使い方を覚えることをすすめる。

42 :30:2005/09/02(金) 18:13:41 ID:???
>>31
>>32
>>33
ありがとございます。

当初>>33みたいなことを考えてたんですが、Pivotが使用できなかったので、>>31のような方法でやりました。

OLAP Serviceはやったことがないのでまた調べてやってみます。

43 :NAME IS NULL:2005/09/02(金) 21:29:23 ID:???
ID,Interval,Date
1, 'm', '2005/01/01'
2, 'd', '2005/01/02'
3, 'y', '2005/01/03'
というデータが入っている3つのフィールドからなるテーブルがあるとします。

SQLServer2000のviewでDateadd関数を使おうとする時、第一引数を
上記テーブルの2つ目のフィールドから取得して(つまりは動的に)
実行しようとすると
“ADOエラー 'Interval'はdateaddオプションとして認識されません(w”
となります。

具体的にSQL文を挙げると、
SELECT ID,Interval,Date,Dateadd(Interval,Date) AS Date2
FROM Table1
てな感じです。

何か良い方法はありますでしょうか?

44 :NAME IS NULL:2005/09/03(土) 00:17:55 ID:???
>>43
DateAddの最初のパラメータは特種なのね。CASEをつかったらどうでしょう。
case Interval when 'm' then Dateadd(m, 2, Date)
when 'd' then Dateadd(d, 2, Date)
when 'y' then Dateadd(y, 2, Date)
end

45 :NAME IS NULL:2005/09/03(土) 03:56:00 ID:chDzSeee
SQL Serverで、Oracleでいうところのfor updateをするのにはどうしたら良いんでしょうか?
処理を開始する前に、特定の範囲のデータをロックしたいのですが・・・。


46 :NAME IS NULL:2005/09/03(土) 07:44:26 ID:leiODTIC
|ω゜)先生質問
全部の列にインデックス張りまくるとハッシング出来て検索効率アプと聞きましたがマジすか

47 :NAME IS NULL:2005/09/03(土) 08:21:29 ID:???
>>45
カーソルと組み合わせて使います。
マニュアルのSELECTではなくDECLARE CURSORのところを参照してください。
DECLARE CURSOR select ... FOR UPDATE
ORACLEの使い方と近いのはREAD COMMITEDのトランザクションを開始させてロックヒントを指定する使い方。
BEGIN TRANSACTION
SELECT ... WITH UPDLOCK (HLDLOCK)
COMMIT WORK

48 :NAME IS NULL:2005/09/03(土) 08:35:08 ID:???
>>46
どっからそんなガセを仕入れたか知らないが、ディスクの容量と挿入時のオーバーヘッドが馬鹿にならない。
よく使うキーと関数従属のフィールドがあった場合にそのペアをまとめて索引に指定すると検索の効率が
上がるとこがあるからそいつの勘違いじゃないかな。MSSQLの場合はそのキーがクラスタ化インデックスなら
すでにそれに近い状態になっているから効果は薄い。

49 :46:2005/09/03(土) 15:54:20 ID:???
>>48
|ω゜)ノ 回答どうも
やはり無意味っぽいですのう

50 :45:2005/09/05(月) 03:40:02 ID:???
>>47

ありがとうございまーす

51 :43:2005/09/05(月) 09:12:03 ID:???
>>44
レスありがとございます。
caseはviewでは使用できないですよね・・・

viewで取得したデータをもとにストアドで加工したかったんですけど。
やっぱり全部ストアドで書かないといけないのかなぁ・・・

52 :NAME IS NULL:2005/09/05(月) 09:25:49 ID:???
>>51
漏れはVIEWでCASE式使いまくっているが、何か?
CASEの使い方間違ってんじゃないの?

53 :NAME IS NULL:2005/09/05(月) 09:27:34 ID:???
連投スマソ
つーか、ストアドを最終的に使うんなら、VIEW使わず、全部ストアドでしたほうがよくないか。
やり方にもよるだろうが。

54 :43:2005/09/05(月) 09:37:44 ID:???
>>52

あ、Access2000のadpプロジェクトでviewを作成してました。
そこでは“case式はサポートされていません。”て出ます。

現在、全部ストアドで行う方法を検討中です。

55 :NAME IS NULL:2005/09/05(月) 09:44:25 ID:???
>>54
たしかデザイナで作成するときはCASEは使えなかった覚えがある。
でもVIEW作成クエリを直接発行すれば使える。

CREATE VIEW view1
AS
 SELECT id, interval, date,
  CASE interval
    WHEN 'm' THEN Dateadd(m, 2, Date)
WHEN 'd' THEN Dateadd(d, 2, Date)
WHEN 'y' THEN Dateadd(yy, 2, Date)
  END AS date2
 FROM TABLE1

後はdateadd部分だけをユーザー定義関数するとかの方法もあるけど、>>53 が言うとおり
ストアドから呼び出すのなら、全部ストアド内で処理した方がいいと思う。

56 :43:2005/09/05(月) 10:42:17 ID:???
>>55

結局、全てストアドで処理することにしました。
なぜViewを使いたかったかというと、そのストアドにはパラメータを複数使用し、そのパラメータにより動的にSQL文を生成し、生成されたSQL文をシステムのストアドsp_executesqlに投げてデータを取得する・・・てなことをやりたかったのです。

ただ、階層が深くなってしまうので分かりやすいようにViewにできる箇所はViewにしようかと思っていたのですが。

複雑なSQL文をsp_executesqlに投げる手法は、投げるSQL文がバグっているときにその場所を探しにくいですよね。

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

57 :NAME IS NULL:2005/09/05(月) 10:55:22 ID:???
>56 は 一時テーブル について調べるがヨロシ
下手にネストが深いクエリ作るよりかは、一時テーブルを利用すると激早ということもあり。

58 :NAME IS NULL:2005/09/05(月) 18:36:12 ID:???
一時テーブルは、多くの場合メインメモリ上に作られるから、めちゃ速いよ!

59 :43:2005/09/05(月) 19:21:57 ID:???
>>57
>>58

アドヴァイスありがとございます。
ちょっと調べてやってみます。

でも、メインメモリ上に作られるということは確かに速そうだけど、
その分サーバに負荷がかかるよね??
まぁ、そんなにアクセスが集中するシステムでもないし、知っておいたほうが良いと思うので調べます。

60 :NAME IS NULL:2005/09/05(月) 20:53:53 ID:???
>>59
>その分サーバに負荷がかかるよね??
どっちが速いかとか負荷がかかるかなどはケースによる。
複雑な問い合わせをすると内部的に一時テーブルを作るから同じこと。
おすすめなのはストアド内のローカル一時テーブル。ストアドが完了すると
その時点で削除されるから、コネクションが切れるまでゴミが残ることはない。
ストアドの最後に select * from #一時テーブル名 を指定して結果セットとして返せばよい。
実テーブルをワークに使うのは最悪の選択だが一時テーブルはよい選択肢であることが多い。

61 :43:2005/09/06(火) 08:44:18 ID:???
>>60

あ、この手法は既に実際にやっていました(汗
なんかもっと全然違うことを勝手に想像してた!

失礼致しました。

62 :NAME IS NULL:2005/09/06(火) 17:27:10 ID:???
現在SQL Server2000 SEをWindows2000serverで動かしています。

確か、SQL Serverは物理メモリを限界まで使うと聞いた事があるのですが
フル活動している状態でタスクマネージャを見ても600〜700Mくらいの
物理メモリが利用可能となっています。
ちなみに物理メモリ2.5G、SQL Serverの使用量は1.7Gになっています。
メモリの動的設定の最大は2.5Gになっています。

最近パフォーマンスに不満が出てきたので、メモリの増設を考えていましたが
この状態で、メモリを増設してもパフォーマンスは変わらないでしょうか?

まとめきれないで長文になってしまいましたが、お教え頂けないでしょうか?

63 :NAME IS NULL:2005/09/06(火) 18:03:45 ID:???
>>62
OSとSQLServerのEditionで使用可能な最大物理メモリは異なります。
Standard Editionだとサポートする最大物理メモリは2Gまで。/3G や /AWEはサポートしていないはず。
それ以上のメモリはディスクキャッシュかOSや別のアプリケーション向けに使われるから無駄ではないが、
既に2.5Gメモリを積んでるなら増設しても効果は薄いかもしれないですね。

64 :62:2005/09/06(火) 18:10:19 ID:???
>>63
お答え有難う御座います。
Standard Editionは2Gまででしたか。どうも勘違いしていたようです。
そうなるとメモリの増設は意味無いですね。

他の方法を考えたいと思います。有難う御座いました。

65 :NAME IS NULL:2005/09/06(火) 22:41:55 ID:???
Workgroup EditionってADOやADO.NETを使って接続できるよね?
ttp://www.microsoft.com/japan/sql/evaluation/overview/Feature.asp
のデータアクセスの欄見ると出来ないように読めるんだけど...


66 :NAME IS NULL:2005/09/07(水) 00:25:40 ID:???
>>64
何も考えずに update statistics と sp_recompile をするといきなり軽くなることもある。
それでも重けりゃプロファイラで duration が長いクエリを探して
そいつを重点的にチューニングしてみるといい。

>>65
この一覧はわかりにくいな。
そのデータアクセスの表はReportingServiceの機能。
Workgroup Edition に ReportingService が入ってないからN/Aになってるだけのこと。

データベースエンジンへの接続は普通にできる。

67 :65:2005/09/07(水) 08:12:58 ID:???
>>66
成程、上にあったのか... 情報感謝です。



68 :NAME IS NULL:2005/09/08(木) 18:39:01 ID:d+uVCPrO
SQLserverとperlでプログラムを作っているんですが、
テーブルaに日付Aの項目、テーブルbに日付Bの項目があり、
データベース上で両方の日付の比較を行い、
ダウンロード日と更新日を比較して、
ダウンロード日が新しければperlで処理1をする
ダウンロード日と更新日を比較して
ダウンロード日が古ければperlで処理2をする
とかいった処理はSQLではどうやったらうまくデータがプログラムに渡せるでしょうか??
何をどうしていいやら見当がつきません。

69 :NAME IS NULL:2005/09/08(木) 19:01:16 ID:???
>>68
諦めたら?

70 :NAME IS NULL:2005/09/09(金) 07:51:26 ID:???
>>68
aとbにはキー項目くらいはあるんだろ?だったら
ダウンロード日が新しいもの一覧のaとbのキーのペアをまず引いて、
それを読みつつ該当するデータに対して処理1を行う
次にダウンロード日が古いもの一覧のaとbのキーのペアを引いて
それを読みつつ該当するデータに対して処理2を行う
とでもしてはいかがか。

どうせperlに引いてきて処理をするんなら
キーのペアを出す手間を増やしたところで
パフォーマンス的には大して変わらんでしょ

71 :NAME IS NULL:2005/09/09(金) 09:48:11 ID:PwVPEYxj
windows2000serverでデータベース?の構築をしたいのですが、
インストール後Enterprise Managerで、データベースの新規作成を
したいのですが、コンソールルートの中のSQLserverグループの下の
ところで新規作成しようとしてもデータベースのところが反転してい
ないのでクリックできません。少ない情報ですいませんがご教授お願
いします。データベースの知識はAccessを少しつついた事がある程度です。

72 :NAME IS NULL:2005/09/09(金) 09:53:54 ID:ON4510Nu

データベースの新規作成をEMでやるにはインスタンス名のところで右栗じゃなくて
そのさらに下のデータベースというところで右栗っ区をするんだよ

73 :NAME IS NULL:2005/09/09(金) 09:55:14 ID:???
>>69
先にSQLServerグループの下でSQL Serverの新規登録をしなくちゃいけないと思われ。

74 :71:2005/09/09(金) 10:07:00 ID:PwVPEYxj
規定のコンピューター名が入ったSQLServerが出来るはず(画面上では出来てる)
なんですが、それを開こうとすると接続できません。と出てしまいます。参考
サイトを見るとそれで新規作成もしくは出来てるのがあるみたいな事書いてあった
んですが・・・。ちなみにインストールしたのが、windows2000serverパーソナル
版でした。スタンダードはインストールできなかったんですが、そちらのほうの、
問題でしょうか?

75 :71:2005/09/09(金) 10:19:18 ID:PwVPEYxj
あとOSは、windowsXPで、今マニュアル読んでるんですが、これだとスタンダードは
インストール出来ないみたいですね。うーん・・・。

76 :NAME IS NULL:2005/09/09(金) 10:19:22 ID:???
SQL関連のサービスは立ち上がっているか?


77 :71:2005/09/09(金) 10:28:38 ID:PwVPEYxj
タスクバーでは、SQLserver実行中になっています。

78 :NAME IS NULL:2005/09/09(金) 10:30:43 ID:???
接続できませんというエラーメッセージが表示されることはない。
 xxxへの接続を確立できませんでした。
 理由:xxxxx
のようなエラーメッセージが表示されるはず。
バカは勝手に意訳せずにエラーメッセージをありのまま書けよ。

79 :71:2005/09/09(金) 10:34:01 ID:PwVPEYxj
新規でSQLserverを作成しようとしても、aaa(コンピューター名)-SQLserver
が存在しないか、アクセス拒否されました。と出ます。

80 :NAME IS NULL:2005/09/09(金) 10:37:56 ID:ON4510Nu
認証に失敗してるっぽいな

81 :NAME IS NULL:2005/09/09(金) 10:39:45 ID:ON4510Nu
途中で送ってしまった

パーソナル版って使ったこと無いけど、クライアントネットワークユーティリティのAliasタブに
なんか変なのとか無いか?

82 :71:2005/09/09(金) 10:43:55 ID:PwVPEYxj
変なのとうとどういう風なのでしょうか?
見てみると全般タブに、
無効なプロトコル
マルチプロトコル、NWLink IPX/SPX、AppleTalk、BanyanVINES、VIA
有効なプロトコル
TCP/IP、名前月パイプ
で、共有メモリプロトコルを有効にする。

83 :71:2005/09/09(金) 10:45:46 ID:PwVPEYxj
が、チェック入ってました。僕も途中で送ってしまいました。すいません。

84 :NAME IS NULL:2005/09/09(金) 10:45:58 ID:ON4510Nu
ちなみにローカルAdmiん権限を持つユーザでXpにログインしてる?

85 :71:2005/09/09(金) 11:06:26 ID:PwVPEYxj
なんか設定を変更してないのに解決しました。多分ログオンスクリプトがはたらいて
たからかなー?と思うのですがよくわかりません。
ありがとうございました。

86 :NAME IS NULL:2005/09/09(金) 18:14:13 ID:???
>>71
Accessプロジェクトで作業した方が良さそうだな


87 :NAME IS NULL:2005/09/12(月) 18:30:50 ID:???
稼動サーバー:OS-NT SQL7.0
テストローカル:OS-2K SQL8.0

稼動サーバーからテーブルを移行しようとしてエクスポート時にエクセル形式を
選択して実行、テストローカル機にインポートしてテーブル確認すると
各項目が設定値ではなくMaxの値になってしまいます。
コレはデフォルトでこうなるのでしょうか?

88 :NAME IS NULL:2005/09/12(月) 18:49:24 ID:???
>>87
「Maxの値」というのが意味不明だけど、
データの移行をしたいならDTS, bcp, accessの順で検討するべし。
Excelはそういう目的に使うのは不適当。

89 :87 ◆v.TAYcWkbs :2005/09/12(月) 23:46:17 ID:???
>>87
説明不足でスマソ
例えばchraの10で設定したのが256になっている。
(最大ではなかった勘違いです・・・)
稼動サーバーのMOドライブあぼーんで一番軽い形式でフロッピー。。
という安易な考えてテーブル取得しようとした為。
mdbだと思い様な気がしたので・・
その順で試してみまする。dクスでつ。

90 :NAME IS NULL:2005/09/19(月) 23:10:21 ID:ZtaDUzUW
64bitのサーバではWorkgroupは動作しますか?

91 :NAME IS NULL:2005/09/20(火) 13:38:25 ID:???
質問です。
SQL Server 2000で
クエリアナライザを使ってプロシージャを作成しました。
そのプロシージャのデバックを行いたいんですが、
デバッガでブレークポイントを設定しても
ブレークポイントが無視され、全て実行されてしまいます。
ブレークポイントを有効にするには、どのようにすればいいのでしょうか?


92 :NAME IS NULL:2005/09/20(火) 14:44:43 ID:???
>>91
デバッガには何を使ってますか?

93 :NAME IS NULL:2005/09/20(火) 15:01:09 ID:???
デバックはデバッガじゃなくデバッカでやれ。

94 :91:2005/09/20(火) 15:06:02 ID:???
>>92
デバッガには、クエリアナライザを使いました。
また、VS.net2003での接続も試して見ました。
どちらも結果は同じでした。
また、あの後色々調べましたが、
SQL Server 2000をインストールしたサーバ上で
クエリアナライザを使用した場合、
正常に動作しました。
サーバ、クライアント端末ともに同じユーザで接続しています。
クライアント側でクエリアナライザを使った場合は、
ブレークポイント等は使用できないのでしょうか?



95 :NAME IS NULL:2005/09/20(火) 16:00:56 ID:???
>>94
T-SQL debugger(変なのがわいてるから英文で表記)は一部にDCOMを使っているからその辺が
影響してるんじゃないかな。DCOMが有効になってなかったり、SQL Server認証を使っていても
WindowsのアカウントがDCOMの権限を持ってなかったりするとうまく接続できない。


96 :NAME IS NULL:2005/09/20(火) 16:55:24 ID:C5euvxwm
すれ違いかもしれませんが
Windows Application Compatibility Toolkit
をインストールしました
個人用途でアプリケーション、ドライバの互換性をチェックしたかったからです。
というのもXPSP2だとXP無印の時についてくる互換性チェックツールは
使えなかったからです。(バージョンが古いとしてはねられる)

そこで上記の4.1を入れたんですがSQL server nameというのが要求されます
適当に入れてみたけどだめ・・・・・・・・・・・・・・・・

どうやったら互換性チェックができますか

97 :91:2005/09/21(水) 11:25:47 ID:???
>>95
DCMOMが関係しているかもということですので、
ttp://www.microsoft.com/Japan/msdn/vs_previous/Vstudio/techmat/feature/storedproc/
のDCOMの設定を試してみましたが、だめでした。
仕方がないので、しばらくはデバッグはサーバマシンでやることになりそうです。
ありがとうございました。


98 :NAME IS NULL:2005/09/22(木) 20:20:20 ID:???
突然だけど
aaa
bbb
ccc
という三行の結果セットから
"aaa bbb ccc"という文字列を取得したいんだけど
どうするのが一番スマートでしょうか

99 :NAME IS NULL:2005/09/22(木) 23:09:05 ID:???
>>98
【帰ってきた】SQL質疑応答スレ
http://pc8.2ch.net/test/read.cgi/db/1124178925/47-48

47 名前:NAME IS NULL[] 投稿日:2005/09/22(木) 17:49:46 ID:BHXwIJyW
JET(Access2000) で、

親テーブル(主キー: id)
id | 名前
--+-----
1 | hoge
2 | foo

子テーブル(主キー: id, 好物 外部キー:id -> 親テーブル.id)
id | 好物
--+-----
1 | パン
1 | ハム
1 | 目玉焼き
2 | ごはん
2 | ハム
2 | 目玉焼き
2 | 黒酢

といった表から

id | 名前 | 好物
--+----+--------------------------
1 | hoge | パン,ハム,目玉焼き
2 | foo | ごはん,ハム,目玉焼き,黒酢

という仮想表を作りたいのですが、これを SQL のみで作ることは可能でしょうか。
好物の値の種類は今後増える可能性があります。好物のオーダーは通常の昇順です。
 クロス集計クエリの結果を JOIN する方法をはじめに思いついたのですが、
これだと一列にカンマ区切りなどでまとめられないことと、項目を動的に
増やすのに * を使うため id 列が2列になってしまうのがよくありませんでした。

48 名前:NAME IS NULL[sage] 投稿日:2005/09/22(木) 18:40:42 ID:???
>>47
文字列を結合するような集合関数はない。あったら便利だとは思うが、
第一正規系を崩してしまうことになるからあえて実装を避けてるのかもしれない。
idで単純に結合してプログラムでid順に読み込みながら最終の形にするのが単純で効率もいい。
それ以外では問合せ結果を結合するストアドファンクションを自作する。Access2000ならVBAで作れる。
ただこの場合idの数だけ繰り返し子テーブルにクエリが発生するので実行効率はよくない。

100 :NAME IS NULL:2005/09/22(木) 23:55:33 ID:GKpTb96/
>>99
簡単に出来るが???

101 :NAME IS NULL:2005/09/22(木) 23:59:45 ID:???
>>100
教えてください。

102 :NAME IS NULL:2005/09/23(金) 00:26:31 ID:???
select 'aaa bbb ccc'

103 :NAME IS NULL:2005/09/23(金) 16:24:52 ID:u9vIwdWl
拡張ストアドに登録するDLLをVBで作ったのですが、SPから呼び出しても
「関数が見つかりません」 っとうまくいきません。 VBではだめでしょうか。
(Win2K Server + MS SQL2K + VS6.0)

104 :NAME IS NULL:2005/09/23(金) 19:07:36 ID:???
>>103
マニュアルにはVC++を使った方法しか書いてないがどうやったんだ?

105 :NAME IS NULL:2005/09/25(日) 11:37:28 ID:yi0j+eTM
SQLのデータベースをバックアップとる方法を教えてください。



106 :NAME IS NULL:2005/09/25(日) 12:25:26 ID:???
マニュアル読め

107 :ポスタル:2005/09/25(日) 15:23:45 ID:cXqyiylo
皆さん初めましてポスタルと言います。突然ですが皆さんに質問、何
ですが、WINNYというゲームや海賊版の映画などをダウンロード
できる、公式のサイトのURL知りませんか?

108 :NAME IS NULL:2005/09/25(日) 15:26:02 ID:???
マニュアル読め

109 :NAME IS NULL:2005/09/25(日) 20:09:53 ID:DP0VW027
クライアント数と推奨エディションのページってMSのサイトにもないよね?
何を基準に選択すればいいんだろう?

110 :NAME IS NULL:2005/09/25(日) 22:04:18 ID:???
>109
 クライアント数よりも、エディション毎の使える機能に注目した方が
良いですよ。
 基本になっているデータベースエンジン部分は共通ですからね。

 使えるCPU数とか、メモリ量から始まって、クラスタリングが必要か
どうか(そこまでの費用を掛けるほど重要かどうか)など等、考慮する
要素は多いですよ。
 ちなみにハードウェア構成やクラスタリングソフトもエディションの
選び方に影響しますし。(逆か?)

 クライアント数は多いがデータ量は少なくて、それほど重要でもないなら
WorkGroup Editionでも良いし、クライアント数が10かそこらでも、
重要度が高くて停止したときの影響が大きければEnterpriseEditionで
クラスタリング構成組んだ方が良いですし。
 (後者の場合、他のRDBMS使えって声も出ると思いますが)

111 :NAME IS NULL:2005/09/25(日) 22:32:11 ID:DP0VW027
>>110
レスありがとうございます。
MSDEで開発してから製品版アップしようと考えていたのですが、
EnterprizeManagerがないと開発効率が悪いので急遽購入を検討してます。
WorkGroupとStandardが大して価格が変わらないので迷っています。
上記2つのエディションですと2005だと性能面で64bit対応とかで大きな差が
ありそうですが、当面は2000を検討してます。

112 :NAME IS NULL:2005/09/26(月) 03:56:22 ID:???
>>111
開発用ならDeveloperEditionでいいじゃん

113 :NAME IS NULL:2005/09/26(月) 11:00:43 ID:???
BULK INSERTで使用するフォーマットファイルについて教えてください。

データファイルが
"aaa","bbb","ccc"
となっている場合、フォーマットファイルで
8.0
3
1SQLCHAR02048"\",\""1col1Japanese_CS_AS
2SQLCHAR02048"\",\""2col2Japanese_CS_AS
3SQLCHAR02048"\"\r\n"3col3Japanese_CS_AS
と指定しているのですが
col1には「"aaa」というように頭のダブルコーテイションがついてしまいます。
これを外して取得するにはどうしたらよいでしょうか?
よろしくお願いいたします。

114 :NAME IS NULL:2005/09/26(月) 20:47:15 ID:???
>>113

8.0
4
1 SQLCHAR 0 1 "" 0 dummy Japanese_CS_AS
2 SQLCHAR 0 2048 "\",\"" 1 col1 Japanese_CS_AS
3 SQLCHAR 0 2048 "\",\"" 2 col2 Japanese_CS_AS
4 SQLCHAR 0 2048 "\"\r\n" 3 col3 Japanese_CS_AS

char(1)の列を頭に追加し、区切り文字なしとすれば最初の一文字が切り離せる
6番目の列順序を0とすればテーブルの列には割り当てられないのでこれでOK

115 :NAME IS NULL:2005/09/26(月) 21:07:51 ID:???
>>114
なるほど。
すばらしい技です。いただきます。ありがとうございました。

116 :NAME IS NULL:2005/09/26(月) 22:40:49 ID:???
なんで、ここの人たちはID:???なんだ・・・
自分のIPを偽装しているのか?

117 :NAME IS NULL:2005/09/26(月) 22:41:47 ID:???
>>116
お前こそ偽装だな

118 :NAME IS NULL:2005/09/26(月) 22:48:33 ID:qBq8UyI7
>>116-117
マニュアル読め

119 :NAME IS NULL:2005/09/26(月) 23:06:19 ID:???
>>118
そのマニュアルってどこにあるの?

120 :NAME IS NULL:2005/09/26(月) 23:26:55 ID:???
>111
 本番環境なら、状況が許せば上位エディションの方が何かと
便利ですが、費用対効果の問題もありますしね。
 個人的には、64bitになったからと言って劇的に処理能力が
上がるとは思えませんが、使えるメモリサイズの上限が上がる面は
非常に良いと思います。
(そこまでメモリ量を要求されるかどうかと言う問題がありますが)
 ただ・・・本番環境と考えてのレスだったんですよ。

 開発環境でしたら、112さんの仰る通りでしょう。
 低コストで入手できますし、Enterprise Edition相当の機能まで
使えますし。

121 :NAME IS NULL:2005/09/26(月) 23:55:13 ID:ocUN6sbM
>>120
前の会社はSIerだったので開発ツールには惜しげもなく金を使えましたが、
今は中小の社内SEに移ったので、なかなか開発ツールに予算が取れません。


122 :NAME IS NULL:2005/09/27(火) 00:00:18 ID:???
>121
 あぁ、なるほど。
 ちなみにですね、本番環境用にSQL Serverをお持ちであれば、
それに付属するEnterprise ManagerでMSDEも管理する事が
可能ですよ。
 ↓ライセンス的にもOkだそうで。
ttp://blogs.sqlpassj.org/mitsugi/archive/2004/10/12/4790.aspx


123 :NAME IS NULL:2005/09/27(火) 00:01:56 ID:???
連書き失礼。

http://shopping.itmedia.co.jp/PriceList.asp?COM_ID=1030605021
Developer Editionの市場価格はこんな感じですので参考までに。

124 :NAME IS NULL:2005/09/27(火) 00:04:57 ID:UiQabrHe
>>122
ご親切にありがとうございます。
よく分からなくなってきたのですが、こうなるとMSDEとWORKGROUPの
差ってのは、CALの必要性の有無以外に何になるのですか?
最大DBサイズだけとかなんでしょうか?

125 :NAME IS NULL:2005/09/27(火) 00:06:54 ID:UiQabrHe
>>123
この有料のMSDEはMSサイトからDLできるものと違うのですか?

126 :NAME IS NULL:2005/09/27(火) 00:13:38 ID:???
そりゃ略せばMSDEだけどさあ…

127 :NAME IS NULL:2005/09/27(火) 10:01:33 ID:???
ワロスw

128 :NAME IS NULL:2005/09/27(火) 11:40:00 ID:???
すいません。質問です。
サーバー OS:Win Server2003 DB:SQL Server2000(SP4)
クライアント:WinXp Pro

クライアントでTransact-SQLを作成しているのですが、デバッグを行いたいので
クエリアナライザにて、オブジェクトブラウザウィンドウから対象のストアドプロシージャを右クリックし
デバッグを選択し、「デバッグプロシージャ」なるウィンドウが出てきます。
そのウインドウで引数などを設定し「実行」ボタンを押すとT-SQLデバッガウインドウが表示されるんですが、
ここでブレークポイントを設定し実行を押してもうんともすんとも言いません。

どうすればデバッグできるようになるのでしょうか?

まったくの初心者な質問で申し訳ありませんが、お分かりの方教えてください。

129 :128:2005/09/27(火) 13:17:47 ID:???
自己解決しました。
アナライザ用のSP4のパッチをあてたらうごきました。
スレ汚し失礼しました。

130 :NAME IS NULL:2005/09/27(火) 23:22:17 ID:???
質問です。

OS windows2000server
DB SQLServer2000(SP4)

上記環境で複数のDTSを作成し、SQLServer内に保存しているのですが、
今度別のサーバーに移動させる必要が出てきました。
DTS自体はmsdbというシステムデータベースに保持されているようですが、
DTSのみを一括で移行する手段はありますでしょうか?
ご教授お願いします。

131 :NAME IS NULL:2005/09/27(火) 23:51:27 ID:???
>>125
機能的には DeveloperEdition と EnterpriseEdition は全く同じ。
開発用にしか使えないというライセンスの縛りがあるだけ。

>>126
なんかMSの中の人もごっちゃにしてるなw
なんでこのQ&Aが「MSDEについて」のセクションにあるのやら。

http://www.microsoft.com/japan/sql/evaluation/license/license_qanda.asp
Q. SQL Server 2000 Developer Edition とはどういう製品ですか?
A. SQL Server 2000 Developer Edition は、開発、テストに限定した製品で、次の制限があります。(以下略)

132 :NAME IS NULL:2005/10/01(土) 20:51:37 ID:???
2005はバグだらけ

133 :NAME IS NULL:2005/10/01(土) 22:15:16 ID:???
>>132
まだそうだろうね。
SP1くらいが出るまでは内部でテストはするけど
顧客に納入はしないな。

134 :NAME IS NULL:2005/10/01(土) 23:21:37 ID:OC8ljYWy
DeveloperEdition で開発したものを本番稼動時にMSDEに移行って
手間かかりますかね?
あと、DeveloperEditionって1つに開発者1ライセンスなんですかね?

135 :NAME IS NULL:2005/10/02(日) 00:22:38 ID:???
>134
はぁ。
また >109 >111 >121 >124 >125 のあんさんかいな。
頼むから、もう少し勉強してくれ。
後、製品の説明に書いてあるような事も聞くなよ。
しかも、>131のリンク内に説明あるぞ。

136 :NAME IS NULL:2005/10/02(日) 02:01:48 ID:???
>>135
知らないなら、そう言ってやれよwww

137 :NAME IS NULL:2005/10/03(月) 09:51:29 ID:???
厨房が紛れ込んでるな。うざいから消えろ。

138 :NAME IS NULL:2005/10/04(火) 18:34:44 ID:???
今までPL/SQLをやってきたのですが、
PL/SQLの%rowtypeや%typeのようなものを、
なんとかしてT-SQLでやることは出来ないのでしょうか?

カラム数が非常に多いテーブルなどで、
全てのカラムに対応する変数を作って
intoで各々の変数に入れるのが大変なのです。

何か効率のいい方法があれば教えてください。

139 :NAME IS NULL:2005/10/04(火) 21:38:30 ID:???
>>138
ヒント:VS2005

140 :98:2005/10/04(火) 22:40:50 ID:???
>>98
自己解決。

declare @tmp varchar(1000)
set @tmp = ''
select @tmp = @tmp + COL1 + ' ' from TABLE1
select rtrim(@tmp)

こんなんで出来るとは思わんかった。ちと感動。

141 :NAME IS NULL:2005/10/05(水) 18:13:26 ID:V1dEt9RB
DQNな質問ですみません。
現在SQLサーバを使ったシステムの管理を行っているの
ですが、今後2、3年でユーザ数が5〜40倍に増えそうです。

そのためSQLサーバでクラスター化を行ってアプリに手を
いれずに、容量を増やしたい(負荷分散)のですが、ハード
とライセンスを追加購入すれば簡単にできるのでしょうか?

クラスタ化できるとか、4台まで可能とか、できないとかベンダー
によって言ってる事が違っており、だまされそうなので、助けて
ください。

SQL Server 2000のEnterprise Editionを使ってます。


142 :NAME IS NULL:2005/10/05(水) 18:23:36 ID:???
現在のベンダーの提案でまともそうなのは複数台のSQLサーバを
クラスタリングして、一つのNASに書き込むってものだけれでも、
本当にDB10台もクラスタリングできるのか烈しく不安なのです。。。

143 :NAME IS NULL:2005/10/05(水) 21:00:35 ID:???
>>141
「今後2,3年で5〜40倍に増えそう」っていうのが
どういうシチュエーションなのか、そこが気になる…

144 :141:2005/10/05(水) 21:36:58 ID:V1dEt9RB
業種は訳ありでいえませんが、たくさん売れればそれだけ
ユーザが増えるという意味です。

145 :NAME IS NULL:2005/10/05(水) 21:38:13 ID:???
今、会員が2人しかいないんだよ。80人を目指してるのさ。

146 :NAME IS NULL:2005/10/05(水) 21:39:21 ID:???
>>141
MSに直接聞けば?
ttps://support.microsoft.com/common/survey.aspx?scid=sw;ja;1238&showpage=1&ws=japan
もしくは
ttp://www.microsoft.com/japan/customer/chat/vlchat.aspx

147 :NAME IS NULL:2005/10/05(水) 21:40:04 ID:V1dEt9RB
それと開発する会社にスキルがないのでオラクルに
乗り換えってのは予算的に無理です。
クラスタリングできないのであれば同じ構成のシステム
をいくつか作って効率が悪くても人海戦術で対応する
予定です。

148 :141:2005/10/05(水) 21:43:50 ID:???
>>146
両方ともアクセスできません。゚・(ノД`)・゚・
ここからだとアクセス制限があるのかな。。。
MSのHPが見えなくなること多いんですよ。

149 :NAME IS NULL:2005/10/05(水) 21:49:30 ID:???
>>148
ちゃんとIE系のブラウザでアクセスしているか?
MSのサイトはGekko系ではちゃんと表示してくれないページが多い

150 :NAME IS NULL:2005/10/05(水) 21:52:27 ID:???
>>141
SQL2000のクラスタリンクはフェイルオーバーのみで負荷分散はない。
Win2003Enterprise上であれば8ノードまでサポートされてる。

参照主体か更新主体かで対策は少し変わってくるが
基本的には1台のサーバを増強していくしかないだろうな

レプリケーションでサーバを増やすという手も無くはないが、できるかどうかはアプリ次第。

>>146
それは窓口違いだろ...

151 :141:2005/10/05(水) 21:52:48 ID:???
IEなんですが、場所が場所だけ(アジアの僻地)IPがやばいです。

152 :NAME IS NULL:2005/10/05(水) 21:58:03 ID:V1dEt9RB

そうですか。 やはりクラスタリング無理そうですか。
採用する前に分かってよかったです。

更新6割 参照4割くらいです。
更新が多いとやぱーりレプリケーションは無理ですよね?

153 :NAME IS NULL:2005/10/05(水) 22:12:39 ID:???
更新が多いかどうかよりも、データが他のサーバにレプリケーションされるまでの
タイムラグをアプリケーションが許容できるかどうかとか、
またサーバ間で更新データの競合が発生しないかとか、
競合が発生した場合にそれを解決できる手段があるかどうかが問題。

154 :NAME IS NULL:2005/10/05(水) 22:14:17 ID:???
う、レプリケーションされるまでの、じゃなくてレプリケートされるまでの、だ。

155 :NAME IS NULL:2005/10/05(水) 22:33:39 ID:8DPXYx5T
素人な質問ですみません。容量とかは適当ですが

OSのファイルA(50GB)とファイルB(50GB)に分かれたデータベース(100GB)があり
その中にテーブルZ(20GB)、テーブルY(80GB)あるとします。

テーブルZのデータを大量に削除しテーブルZが1GB程度になった場合、
テーブルZを狙い撃ちで最適化とか出来るのでしょうか。

やりたいのがテーブルZで20GB使っていたので断片化した容量を整理し、
テーブルY用に連続空き領域を確保したいのです。
(見かけ上は空いていても連続空き容量が無さそうなので)

DBCC SHRINKDATABASEでデータベースを指定するか
DBCC SHRINKFILEでファイルを指定すれば出来そうな気はするのですが
データベースやファイルを指定すると莫大な時間がかかるため、
テーブルを指定して行なう方法がないか知りたいのです。

156 :NAME IS NULL:2005/10/06(木) 06:46:01 ID:???
>>155
もいっこHD用意してオブジェクトのコピーでまるっとコピーするとかが
一番楽かも

157 :NAME IS NULL:2005/10/06(木) 21:39:27 ID:???
つるっとねっ☆

158 :NAME IS NULL:2005/10/06(木) 22:13:06 ID:rEEHAcjK
>>156
本番環境なんであまり簡単にいじれないんですよね。
データベースを指定して最適化しようとするとオフライン時間内に終わらないみたいだし。
SQL Server って断片化したテーブルだけを狙って最適化する方法ってないですか?
もしやデフラグしろとか(´・ω・`)

159 :NAME IS NULL:2005/10/06(木) 22:32:29 ID:???
>158
そもそも、そのテーブルだけ最適化できたとして、狙っている通りに
小さくなるとは限らないしね。

非稼働日にシステムを停止してデータベース丸ごと最適化した方が
良さそうな。


160 :NAME IS NULL:2005/10/06(木) 23:02:19 ID:???
>>159
やっぱりデータベース丸ごとしかないですか。
ありがとうございました検討してみます(´・ω・`)


161 :NAME IS NULL:2005/10/07(金) 13:26:52 ID:???
SQL Server ってalter table でカラムの名前変えられない?

162 :NAME IS NULL:2005/10/07(金) 14:59:12 ID:???
>>161
つsp_rename

163 :NAME IS NULL:2005/10/07(金) 16:42:58 ID:???
Dropして作り直しちゃったw

164 :NAME IS NULL:2005/10/10(月) 13:53:04 ID:???
かなり、初心者な質問なのですが、
サービスマネージャーから開始できなくなってしまったのですが、
なにが原因なのでしょうか?


165 :NAME IS NULL:2005/10/10(月) 15:10:04 ID:???
最低限、OSとエラーメッセージを正確に書かなきゃわからん。
それと、イベントログとSQLServerのログに何かエラーが出てないか?

166 :NAME IS NULL:2005/10/10(月) 19:46:55 ID:???
>>165
失礼致しました。
OSはXPProを使用しております。イベントログを見てみると
SQL Server evaluation period has expired 
とありました。今、評価版を使用しているのですが、期限が切れたということで
もう使えないということなのでしょうか?

167 :NAME IS NULL:2005/10/10(月) 23:12:20 ID:???
>>166
ウィルスですねw

168 :NAME IS NULL:2005/10/11(火) 00:54:36 ID:???
>>166
メッセージの通り評価版の期限切れ。
製品版を上書きインストールすれば今の環境を壊さずに使えるはず。
テスト用ならDeveloperEditionでいいんじゃないか。大体5000〜6000円くらい。

まさか評価版で本番環境を作ったとか言わないよな?w

169 :166:2005/10/11(火) 21:47:23 ID:???
>>167
ありがとうございます。
早速、ウィルスチェックしてみます。

>>168
DeveloperEditionはテスト用でなく、開発用だよ!>アフォ

170 :NAME IS NULL:2005/10/11(火) 22:22:57 ID:???
169の騙りっぷりを

脱力した、萎えた「レス」のガイドライン 1粒目
ttp://ex13.2ch.net/test/read.cgi/gline/1128518677/

に晒しといた。

171 :NAME IS NULL:2005/10/11(火) 22:35:11 ID:???
169はテスト用にわざわざEnterpriseEditionを買ってしまったんだろw

172 :NAME IS NULL:2005/10/12(水) 16:15:50 ID:XLxwdkpo
セグメントの違うサーバの認識ってどうやってやるの?

173 :168:2005/10/12(水) 19:44:04 ID:???
>>169
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!

174 :NAME IS NULL:2005/10/12(水) 20:10:59 ID:???
169=173

175 :NAME IS NULL:2005/10/12(水) 20:11:59 ID:???
>>172
セグメントってネットワークセグメント?
普通にIPで接続すればよかべ

176 :175:2005/10/12(水) 21:48:39 ID:???
>>172
そうそう、IPの前には、”\”をみっつ入れなきゃだめだべ

177 :NAME IS NULL:2005/10/13(木) 20:13:16 ID:???
>>172
何を使ってやってるのか分からんが
2005βだと初期状態ではTCP/IPでの接続は出来なかったりするな。
そこを確認してみた方がいいかも。

178 :NAME IS NULL:2005/10/13(木) 22:45:59 ID:???
SQLServerのDateTime型って時分秒まで持ってますが、
日付の部分だけ取り出したいのです。
一度、文字列に変換してから切り取るしか方法がないのですかね?



179 :NAME IS NULL:2005/10/13(木) 22:53:54 ID:???
>>178
convertかdatepart

180 :NAME IS NULL:2005/10/13(木) 23:32:43 ID:???
datetime型は300分の1秒まで持ってるけどエンタープライズマネージャやクエリアナライザでは
見えないけどどうやったら見えるようになるのさ?

181 :NAME IS NULL:2005/10/13(木) 23:38:29 ID:???
エンタープライズマネージャは知らんがクエリアナライザならconvert
つか聞く前にBooksOnline見れ

182 :NAME IS NULL:2005/10/14(金) 23:33:23 ID:???
>>180
内部的にはデータとして管理されていますが、見ることは出来ません。
更新時間など、時間の比較を行うために用意されています。

183 :180:2005/10/14(金) 23:45:00 ID:???
>>182
ありがとうございます。
やはり目視は無理なんですね。

>>181
BooksOnline探すよりこっちで聞いた方が早いから聞いてるんだよ!>アフォ


184 :NAME IS NULL:2005/10/15(土) 02:15:05 ID:???
この板も全部ID出るようにならんかな

185 :181:2005/10/15(土) 02:23:29 ID:???
>>183
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


186 :NAME IS NULL:2005/10/15(土) 06:07:43 ID:???
>>183=185

187 :NAME IS NULL:2005/10/15(土) 09:16:43 ID:???
同じパターンかよ
ガイドライン化でも狙ってんのか?

188 :NAME IS NULL:2005/10/20(木) 15:24:22 ID:???
規定のインスタンスでインストしたSQL2000ですが、コンピュータのホスト名を変更した場合って
SQLは再インストールすることになりますか?それともインスタンス名も自動的に変わりますか?

189 :NAME IS NULL:2005/10/20(木) 17:22:16 ID:???
>>188
@@SERVERNAMEについてBooksOnlineで調べてみるがよろし

190 :NAME IS NULL:2005/10/20(木) 21:36:48 ID:???
>>188
基本的には再インストールしなくても普通に使っていける

だけどマスタテーブルをupdateしないと
レプリケーションの設定とかするときにうまく行かない

191 :NAME IS NULL:2005/10/20(木) 21:51:54 ID:IMQmSs9w
commandプロンプトの実行ってプロシージャから呼び出せないの?

192 :NAME IS NULL:2005/10/20(木) 22:12:18 ID:???
>191
つ xp_cmdshell

193 :NAME IS NULL:2005/10/20(木) 22:15:01 ID:IMQmSs9w
おおっ!!動いた(゚∀゚)
すぺしあるトンクス

194 :NAME IS NULL:2005/10/21(金) 00:28:08 ID:???
この時期に始める開発だと、2000と2005のどっち使うか迷うですね

195 :NAME IS NULL:2005/10/21(金) 08:10:17 ID:???
2000の方が安心感はあるけどねぇ
2005のパッチが出るのを待てるかどーかじゃないか?w

196 :NAME IS NULL:2005/10/21(金) 12:21:46 ID:Yq+kopBy
>>194

俺だったら
客先納品なら2000
社内で管理可能なら2005
って基準だな。

197 :NAME IS NULL:2005/10/21(金) 12:30:24 ID:???
それいいな

198 :NAME IS NULL:2005/10/21(金) 23:14:29 ID:???
うむ
少なくともSP1くらいまで出てくれないと
客先には入れらんないよなー

199 :NAME IS NULL:2005/10/21(金) 23:33:24 ID:???
>>194
即、2005を採用すべき!
技術者としてそのくらいのプライドは持ちましょう。

200 :194:2005/10/21(金) 23:37:35 ID:???
>>199
ありがとうございます。
そうですね、時代遅れの2000を今更って感じですね。

>>195
はぁ?何時出るのかも分からないパッチなんて待ってられるかよ!>アフォ


201 :195:2005/10/21(金) 23:38:23 ID:???
>>200
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


202 :NAME IS NULL:2005/10/21(金) 23:48:31 ID:???
俺が195だけど、まぁいいかw

203 :NAME IS NULL:2005/10/22(土) 00:53:47 ID:???
ある程度長期の案件でかつMSのサポートを受けられる(=hotfixをもらえる)
環境なら今から2005でもいいかもな

204 :NAME IS NULL:2005/10/22(土) 01:40:16 ID:???
入力日付をチェックするってどーやんの???
文字列で6桁('YYMMDD')を直接変換する関数ってあんの?

205 :NAME IS NULL:2005/10/22(土) 10:11:08 ID:???
>>199-201
それうざい

マジレスだけど以前は「バックアップが戻せない」とか
そういうレベルの不具合があった訳で、
それ考えると十分に製品版の人柱を見てからじゃないとな。

206 :NAME IS NULL:2005/10/22(土) 13:44:37 ID:???
>>204
format関数とdatechk関数を組み合わせれば可能だよん

207 :204:2005/10/22(土) 13:48:08 ID:???
>>206
ありがとうございます。
早速試してみますね。

>>205
はぁ?オマエの方が余程ウザイんだけど???
オマエ、C社の奴だろ!パッケージ売れないからって八つ当たりするな!>アフォ

208 :205:2005/10/22(土) 13:49:11 ID:???
>>207
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


209 :NAME IS NULL:2005/10/22(土) 18:10:39 ID:???
>>207-208
それうざい

210 :NAME IS NULL:2005/10/24(月) 09:36:52 ID:mG/V1qwW
varchar型で6桁の日付を
datetime型で8桁にする方法教えてください
yymmdd → yyyymmdd

211 :NAME IS NULL:2005/10/24(月) 09:51:11 ID:???
>>189-190
ご教授ありがとうございました


212 :NAME IS NULL:2005/10/24(月) 18:30:37 ID:???
datetime型に桁という概念はありません。

213 :NAME IS NULL:2005/10/24(月) 20:43:36 ID:???
>>210
dateserial関数で可能だよん


214 :210:2005/10/24(月) 20:45:56 ID:???
>>213
おぉ、出来ました!!(^_^)v
大変ありがとうございました。

>>212
はぁ?桁のないデータなんて存在しねぇーんだよ!
それとも何か?日付型が可変長とでも言いたいのか??>アフォ


215 :212:2005/10/24(月) 20:46:34 ID:???
>>214
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


216 :NAME IS NULL:2005/10/24(月) 21:10:24 ID:???
Transact-SQLにDateSerialは無い。
とりあえず「>アフォ」と「なぐるぞ」をあぼーんするのが良さげだな。

>>210>>213-215の腐れ荒らしじゃない事を祈りつつマジレスすると
yymmddをDatetime型に変換するなら
 select cast('051024' as datetime)
で十分。
それをyyyymmddにするなら
 select convert(char(8),cast('051024' as datetime),112)
でok

217 :NAME IS NULL:2005/10/24(月) 22:41:39 ID:???
SQL Server が動いている PC-A からデータベースのファイル(実体)を PC-B
へなんらかの方法でコピーなどし、PC-B の SQL Server に sa でログイン
できれば、PC-A の sa のパスワードがわからなくても PC-B に
データベースが復元できてしまうと思います。

ここで PC-A の sa 以外にはデータベースの(特にテーブルのデータ)
中身を見せたくない場合、何か方法はありますでしょうか?
(PC-A からデータベースファイルの実体をコピーされないようにする、
という方法以外で)

218 :NAME IS NULL:2005/10/24(月) 22:51:23 ID:???
データファイルを暗号化してしまえば?

219 :217:2005/10/24(月) 22:57:38 ID:???
ビューとかストアドは暗号化できると思うのですが、
テーブルのデータも暗号化できるのですか?
できるんであれば方法を教えて頂けるとうれしいです。

220 :218:2005/10/24(月) 23:05:33 ID:???
出来る訳ねーだろ!>ヴォケ

221 :NAME IS NULL:2005/10/24(月) 23:12:09 ID:???
>>218
お前何がしたいの?

222 :NAME IS NULL:2005/10/24(月) 23:15:01 ID:???
>>219
暗号化ファイルシステム

223 :217:2005/10/24(月) 23:24:03 ID:???
>>220
...

>>222
うーん、SQL Server だけではなんともならない、という事でしょうか?
SQL Server のテーブルなどに入った個人情報等を保護するには、
SQL Server だけではなんともできない?


224 :217:2005/10/24(月) 23:33:10 ID:???
DeveloperEdition で開発したものを本番稼動時にMSDEに移行って
手間かかりますかね?
あと、DeveloperEditionって1つに開発者1ライセンスなんですかね?


225 :217:2005/10/24(月) 23:34:35 ID:???
>>224
ねー、俺 217 なんだけど、なんであなた 217 を名乗っているの?
もうわけわかんない。

226 :217:2005/10/24(月) 23:41:08 ID:???
SQL-Server2000で、DBのバックアップを取りたいんですけど、
ABC-DEF って名前のDBなので、
'-' の近くに無効な構文があります。
とクエリアナライザでエラーになります。

Backup DataBase ABC-DEF TO DISK='C:\WORK\aaa.bak'

どうすればよいでしょうか?
すいません、素人質問ですが宜しくお願いします。


227 :217:2005/10/24(月) 23:43:06 ID:???
>>226
ねー、俺 217 なんだけど、なんであなた 217 を名乗っているの?
もうわけわかんない。


228 :217:2005/10/24(月) 23:45:09 ID:???
なんでもいいからおまえら >>217 に答えろよw

229 :217:2005/10/24(月) 23:55:30 ID:???
風呂入る前にウンコする?
風呂入ってからウンコする?


230 :217:2005/10/24(月) 23:56:20 ID:???
>>229
風呂の中でウンコする。

231 :NAME IS NULL:2005/10/24(月) 23:57:36 ID:???
Windows2000ServerでSQLServer6.5を稼動させてる人いますか?
なおかつ最新スペックのサーバー機で。

当方、ポンコツサーバーテスト機にて、とりあえず動作確認はできてるんだけど
本番環境で安定稼動するかどうか不安です。

現行のNT4.0サーバー機が最近不安定になってきて、しょっちゅうダウンするので
サーバー機自体を変えたいなと思っています。

232 :NAME IS NULL:2005/10/25(火) 01:03:53 ID:???
>>226
[ABC-DEF] か QUOTENAME('ABC-DEF') かな
ハイフン使わない方が良いけど。

233 :NAME IS NULL:2005/10/25(火) 08:09:04 ID:???
>>217
ロール使えばいいんじゃないの

234 :NAME IS NULL:2005/10/25(火) 20:15:39 ID:???
>>217
そもそもDBサーバのWindowsへのログインを容易に出来ないようにして
ファイル共有とかも絞っておけばコピー自体出来なくすることが可能
そういった外堀に気をつければ十分保護と言える
MDFファイルのドライブを暗号化や圧縮ドライブなんかにしてしまうと
その分パフォーマンスが落ちるわけでお利口な判断ではないな

>>224


>>229
入る前

235 :厨房13年 ◆Zs1YdH77Oc :2005/10/26(水) 17:52:42 ID:FL2OErqJ
誰か知恵を貸してください。
今、SQL SERVER2台(本番用とテスト用)で比較してるんですが、テスト用だと10秒位で終るのに、
本番用だと約100秒と10倍時間が掛かってしまいます。
原因が解らないです。。。

・環境(本番、テスト共通)
OS Windows 2000
DB SQL Server 2000
データ量は、本番のデータをそのまま持ってきているので同じです。

・本番とテストの違い
本番はVPN経由で接続されています。
(ファイルを転送した感じでは、10Mは出ている様です)

運用も厨房なので、恐らく、なんか設定をいじっている様な気がしますが。。。
何かピンと来るものがあれば、レス下さい。

236 :厨房13年 ◆Zs1YdH77Oc :2005/10/26(水) 17:55:06 ID:FL2OErqJ
>>235の補足
SQLは「SELECT」のみです。
ハード構成は、テスト、本番とも同じです。

237 :NAME IS NULL:2005/10/26(水) 22:07:33 ID:???
超基本的にインデックス張り忘れとかだったりせんか

238 :NAME IS NULL:2005/10/26(水) 22:22:43 ID:???
VPN経由で10Mなら100BaseのLANと比較して当然の結果じゃない?


239 :NAME IS NULL:2005/10/26(水) 22:33:32 ID:???
本番サーバーにLAN接続して、VPNの問題かどうか切り分けた方が早いんでない?

240 :NAME IS NULL:2005/10/26(水) 23:29:53 ID:???
ネットワーク云々の前に、普通はまずローカルで試さないか
現地にいけないのならリモートデスクトップとか使えよ

241 :NAME IS NULL:2005/10/27(木) 00:05:37 ID:???
どんなデータ何件とってきてるんだよ

242 :厨房13年 ◆Zs1YdH77Oc :2005/10/27(木) 00:08:10 ID:ZugCF9qj
>>237
その可能性大です。

>>238
10Mでも同じでした。

>>239
こっち東京で、SERVERが大阪です。

>>240
コンソール使えれば一番良いんだけど。。。
実を言うとテストも私の手元には無いんです。
細かい話をすると、
私=>元請(東京)でテスト=>End User(大阪)
なんで。。。

電話でやってもダメそうなので、明日、元請のところに乗り込みます。。。
皆様ありがとうございますた。

243 :NAME IS NULL:2005/10/27(木) 00:13:32 ID:???
>>242
乙。
大阪はタイガースが無様に負けて暴動が起きているから装備に注意を。

244 :NAME IS NULL:2005/10/27(木) 11:02:25 ID:???
ACCESSのODBCリンクテーブルでSELECTしてるとか?
ローカルのJetにデータを引っ張ってくるのに時間がかかってるんだったりして。

245 :NAME IS NULL:2005/10/27(木) 12:48:14 ID:hz34cpjJ
Verchar型項目の数値チェックの方法教えて下さい
spl条件に加えたいんです

246 :NAME IS NULL:2005/10/27(木) 13:04:50 ID:???
>>245
乱暴な質問だなぁ。
もしかするとisnumeric関数が使えるかもしれんが…
求めている物と違うのなら、もう少し質問方法を考えてみたらどうだ?

247 :NAME IS NULL:2005/10/27(木) 13:24:25 ID:g0iURUV0
質問です。
ACCESSのDBにある、オートナンバー型を、SQLserverへ移行するには、
どうすればよろしいですか?


248 :NAME IS NULL:2005/10/27(木) 13:27:13 ID:???
>>247
identity

249 :247:2005/10/27(木) 13:29:42 ID:g0iURUV0
>>248
すいません。質問の悪かったです。
AテーブルのIDという項目が、オートナンバーで、Bテーブルにリンクを張っているんですが、
SQLserverへ、アップサイジングすると、Bテーブルのデータがまったく作成されません。
どうしたらよろしいですか??

250 :247:2005/10/27(木) 14:48:25 ID:g0iURUV0
補足です。
Aテーブルと、Bテーブルは、1対多の関係で、Aテーブルを開くと左側に、+印があり
それを、開くとそのレコードと繋がっているBテーブルのレコードがのぞける状態です。

説明下手で、申し訳ありません。

251 :NAME IS NULL:2005/10/27(木) 20:11:13 ID:???
>>247
Accessは知らんけどSQLServerでは
AへのinsertのトリガでBにもinsertする、としないとだめじゃないかな

252 :NAME IS NULL:2005/10/27(木) 20:54:20 ID:???
Bの内容はどこからくるんだ
Accessでテーブル開いても+が出ないってことか?

253 :厨房13年 ◆Zs1YdH77Oc :2005/10/28(金) 01:51:51 ID:btINETKh
遅い原因は、回線ですた。
スピードテスト位しろ。

254 :NAME IS NULL:2005/10/28(金) 16:33:48 ID:XeXfGGVc
表ロックをしたいのですが、どうすればいいのでしょうか?


255 :254:2005/10/28(金) 16:43:00 ID:XeXfGGVc
SELECT * FROM table_name WITH (TABLOCKX)
で出来ました。


256 :NAME IS NULL:2005/10/29(土) 07:14:32 ID:???
誰か mixi に SQL Server コミュつくれ。

PASSJ は、なんか内輪ノリだし
2005 コミュは管理者不在で書き込み止められてるし
あとは「某MS から表彰」とか言ってる
自意識過剰な人たちの、閉鎖的なコミュだし。


257 :NAME IS NULL:2005/10/29(土) 11:00:36 ID:???
今このタイミングでmixiにSQL鯖コミュ作っちまったら…
想像するだに恐ろしいwww

作りたいのは山々なのだが、作るに作れない事情wがあるので、他の方よろしく

258 :NAME IS NULL:2005/10/29(土) 13:12:32 ID:???
SNSのアカウントひとつも持ってない
ショボーン

259 :NAME IS NULL:2005/10/30(日) 12:50:18 ID:???
>256
ここでの議論じゃ不足?
mixiは技術系はあらかた駄目っていう印象があるけど。

260 :NAME IS NULL:2005/10/31(月) 13:26:44 ID:???
SQLServer2000のデータバックアップについて質問です。

バックアップ手順と復元方法で、
A:バックアップ)いったんSQLServerのサービスを止めてから.mdfファイルと.ldfファイルをコピーバックアップ
  復元)これらのファイルをアタッチ

B:バックアップ)EnterpriseManagerでDBを右クリック→データベースのバックアップ
  復元)EnterpriseManagerでDBの復元で上記ファイルを指定

このABによる違いってあります?

261 :NAME IS NULL:2005/10/31(月) 20:11:43 ID:???
サービスをとめる必要があるかないかとか、
バックアップ・リストアにかかる時間がそれぞれ違うとか

262 :NAME IS NULL:2005/10/31(月) 21:41:18 ID:???
デタッチしてコピーだとファイル内の空き領域分もコピーされちゃうから
ファイルサイズはもちろんでかくなりますわな
でもその分操作自体が簡単というメリットはある


263 :260:2005/11/01(火) 12:23:37 ID:gFFOGiiW
>261
>262
サンクス

なるほど。
その程度の違いくらいなもんですか。
個人的にはBの手法が好ましいと思っていたんですけどね。
Bを薦めてもかたくなにAの手法でバックアップしたがる香具師が社内にいるので
どうしたものかと小一時間・・・。
とくに問題ないのであれば香具師は放置します。

264 :NAME IS NULL:2005/11/01(火) 21:16:39 ID:???
俺の会社にはバックアップと称して
「全オブジェクトのスクリプト生成とbcp」って奴がいるぞ…。
それよかましだろ

265 :NAME IS NULL:2005/11/01(火) 21:49:32 ID:???
>264
すげーwwww
つわものだwwwwwww

266 :NAME IS NULL:2005/11/01(火) 22:10:07 ID:???
標準のバックアップがSQLLiteSpeed並みに早かったらいいのにな

267 :NAME IS NULL:2005/11/01(火) 23:33:39 ID:??? ?#
>>264
まぁ、それが結局最強だったりするんだがな

268 :NAME IS NULL:2005/11/02(水) 02:23:59 ID:???
>>267
それより最強は同考えても2つはある。


269 :NAME IS NULL:2005/11/02(水) 02:46:53 ID:???
最強が二つもあるのはイヤですねえ…

270 :NAME IS NULL:2005/11/02(水) 14:37:52 ID:19dYxfhq
SQLServerCE2.0をPocketPC2003上で利用しているのですが
GROUP BY 句+集計関数というクエリで、一定行(現在17行)
を超えるとSUMの値がNULLで返ってきます。16行までは
値がとれるのですが・・・

なんらかの制約があるのでしょうか?
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/sqlce/htm/_lce_sql_server_ce_engine_limitations_705.asp
↑でも特に記述はないようで・・・


271 :NAME IS NULL:2005/11/02(水) 21:28:35 ID:???
集計してる値にNULLが混じってるとか…
そんな事は無いかw

272 :270:2005/11/03(木) 00:04:59 ID:DvGnfRpZ
自己レス(&>>271
GROUP BY + ORDER BY + 集計関数
という形式をSQLCEが正しく処理できないようです。

この他、FROM句にサブクエリで作成したテーブル
を利用できないなど、やはり「仕様」のようです・・・

273 :NAME IS NULL:2005/11/03(木) 00:42:49 ID:???
この本と
http://www.amazon.co.jp/exec/obidos/ASIN/4883374653/qid=1130946101/sr=8-8/ref=sr_8_xs_ap_i8_xgl65/250-3799226-7224216
Developer Edition買えば大体のことは勉強できるでしょうか?

274 :NAME IS NULL:2005/11/03(木) 06:14:28 ID:SWAlpZJs
SQLServer2005 でOracleでいうところのINTERSECTのような構文は
サポートされるんでしょうか

275 :NAME IS NULL:2005/11/03(木) 09:27:28 ID:???
>>274
INTERSECTとEXCEPT が追加されています。

276 :NAME IS NULL:2005/11/03(木) 11:44:35 ID:???
>>273
漏れはこの辺で勉強した。

データベース村へ,ようこそ
http://www.amazon.co.jp/exec/obidos/ASIN/4798104884/
SQL Server2000でいってみよう
http://www.amazon.co.jp/exec/obidos/ASIN/4798103349/
SQL Serverで学ぶデータベース入門
http://www.amazon.co.jp/exec/obidos/ASIN/4774119695/
SQL Server 2000 自習書シリーズ
http://www.microsoft.com/japan/SQL/techinfo/selfstudy/Self_doc.asp

あとヘルプ(Books Online)

277 :NAME IS NULL:2005/11/03(木) 14:12:58 ID:???
>>276
Thx
Sybaseの管理やっているし、DBスペも合格しているから、
あんまり入門書は無いとは思っているけど
「いってみよう」のほうがようさげですね。、

278 :NAME IS NULL:2005/11/04(金) 10:28:39 ID:???
教えてください。

no_1.aspより値を取得し、値付きでno_2.aspを開きます。
no_2.aspでは、その値を、MS_SQL_svr に登録します。
SQL_svrは、ODBC経由で開きます。
下記の設定ですと、なぜか、2回値を登録してしまいます。
SQL_svr上で、「ID」はPRIMARY KEYに設定しているので当然エラーが出ます。
どこが、間違っているのか教えてください。

no_1.asp
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
<script language="Javascript">
<!--
function btn_click() {
 if(document.form2.name.value == ""){
  alert("お名前が入力されていません");
  return false;
  }
   if(document.form2.e_net.value == ""){
   alert("E-NET番号がが入力されていません");
   return false;
   }
    window.close();
    url="no_2.asp?ID="+ document.form2.ID.value;
    url=url + "&name=" + document.form2.name.value;
    url=url + "&e_net=" + document.form2.k_net.value;
    window.open(url,""," height=100,width=200,top =180,left = 400,status=no,toolbar=no,menubar=no,location=no");
    return true;
}
-->
</script>

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・


no_2.asp
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
<%
Dim strSQL
SET db=SERVER.CREATEOBJECT("ADODB.CONNECTION")
db.OPEN "xxx","yyy","zzz"

ID=(Request.QueryString("ID"))
name = (Request.QueryString("name"))
k_net_no = (Request.QueryString("E_net"))
NOW1=NOW()

strSQL = "INSERT INTO ID_NAME (ID,name,E_net_no,into_time) VALUES ('" & ID & "','" & name & "','"& E_net_no &"','"& NOW1 &"')"
db.Execute(strSQL)
db.Close
%>
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

279 :NAME IS NULL:2005/11/04(金) 10:48:35 ID:???
>>278
スレ違いだけど…
btn_click() が2回呼ばれているんぢゃね?
こんな感じになっているとか。
<form ... onsubmit="btn_click();">
〜略〜
<input type="submit" ... onclick="btn_click();">

btn_click() の先頭に alert() でも入れて確認してみたら?

280 :NAME IS NULL:2005/11/04(金) 11:20:53 ID:???
>>279

ありがとうございます。
やってみます。

281 :NAME IS NULL:2005/11/04(金) 12:21:35 ID:AtAjXaBZ
文字列を全部ntext型で定義しましたけど、
クエリでLIKEが使えないのですが、どうしたら
検索ができますでしょうか

282 :NAME IS NULL:2005/11/04(金) 12:25:15 ID:???
nvarcharにすれ

283 :NAME IS NULL:2005/11/04(金) 12:43:39 ID:???
使えるだろ?

284 :NAME IS NULL:2005/11/04(金) 13:03:43 ID:obnTC5Pr
ご質問します。
複数クライアントで、同一テーブルを使用する場合、
レコードロックされているのを、判断するにはどうしたらいいですか?
そのレコードが、使用中というメッセージを出したいのですが・・・

285 :NAME IS NULL:2005/11/04(金) 18:14:51 ID:7ewyKrwI
>>284
排他ロックをかけてみる。

286 :NAME IS NULL:2005/11/04(金) 18:24:43 ID:???
>>284
普通はデットロックで無い限りロックが解除されるまで無限に待つ設定になっているので、
セッションに対してSET LOCK_TIMEOUTでタイムアウト時間を設定する。
あとは排他ロックをかけてみて「1222 :ロック要求がタイムアウトしました」が帰ってきたらロック中。

ちょっと老婆心だが、もし修正画面を開きっぱなしにしてその間ずっとロックをかけっぱなしに
しようとしているならそれは間違いだから再考するべし。

287 :NAME IS NULL:2005/11/04(金) 18:26:03 ID:???
>>284
そのようなメッセージを出力する必要があるぐらい長時間ロックするしているの?

288 :NAME IS NULL:2005/11/04(金) 23:00:17 ID:???
>>284
テーブルにロックフラグを追加してロジックで行うのが簡単

289 :284:2005/11/04(金) 23:03:42 ID:???
>>288
やはり、それが妥当ですかね。
ありがとうございました。


>>285
おいおい、質問の意味理解出来ないのか?(w

>>286
はぁ?修正画面で修正中にロックかけて何が間違いなんだよ??>アフォ

>>287
日本語不自由なチョソは黙ってろ!

290 :285:2005/11/04(金) 23:04:41 ID:???
>>289
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


291 :286:2005/11/04(金) 23:05:44 ID:???
>>289
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


292 :287:2005/11/04(金) 23:06:17 ID:???
>>289
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


293 :NAME IS NULL:2005/11/04(金) 23:21:33 ID:???
>>289
場面にもよるが、>>288 の方法が妥当とは思えんのだが…
データの修正画面ぐらいなら、ロックやロックフラグを使わなくても
更新日時をカラムに設けておいて、更新時に更新日時が変化しているかどうかのチェックで充分だろ。

294 :NAME IS NULL:2005/11/04(金) 23:23:36 ID:???
バッチ処理でデータを更新するのに、パフォーマンスUPとか言って
対象データを削除→登録なんてことを毎日やってたらだめだよな!
あっという間にフラグメントが発生して検索が激遅になるよな
検索用SQLばっか直してないで早く気付いてくれ


295 :NAME IS NULL:2005/11/04(金) 23:24:24 ID:???
どの方法もダメダメじゃん。

296 :NAME IS NULL:2005/11/04(金) 23:24:59 ID:???
ttp://www.microsoft.com/japan/msdn/vstudio/2005/express/

SQLだけ竹中

297 :NAME IS NULL:2005/11/04(金) 23:27:36 ID:Ym7j0F/8
ストアドプロシージャの参考書を買いたいけど、なかなかみつからず、ネットで探してみると、あることはありますが、2001年発売とかで…

ふるめだと、内容ちがったりするかな

なんせ進歩がはやい業界ですし

298 :NAME IS NULL:2005/11/04(金) 23:31:50 ID:???
289-292 に楽しいのがわいてるがスルーで

>>293
ロックフィールドをアプリで制御する場合はタイムアウトやらロックしたままアプリが落ちたときの仕掛けを
考慮しなきゃいかんからちょと面倒だね。

299 :NAME IS NULL:2005/11/04(金) 23:38:01 ID:???
>>297
T−SQLの本で十分だろ。
SPで特別なことといえば、変数、戻り値くらいじゃないか?

300 :NAME IS NULL:2005/11/04(金) 23:47:32 ID:???
2005が発売開始されたら、また同じような内容の本が出まくるのかな?

301 :NAME IS NULL:2005/11/04(金) 23:58:59 ID:???
>>288
フラグへのアクセスが衝突して楽しいことになりそうだな

302 :NAME IS NULL:2005/11/05(土) 01:13:00 ID:???
>>294
通常の運用をとめてバッチ処理用の時間を取れるなら
ついでに DBCC DBREINDEX を実行する。

303 :NAME IS NULL:2005/11/05(土) 02:19:52 ID:???
便乗質問
>>288,>>293,>>298
timesptampでやる方法だと、更新しようとしてはじめて更新できないって感じだよね?
それって作業者からすると「ふざけんなゴルァ!」って感じだと思うんだが。
かといって行ロックはWebアプリでは難しい。なんか名案はないもんですかね?

304 :本当の285:2005/11/05(土) 08:15:57 ID:???
ロックフラグは、アプリを強制終了させられると、
フラグが立ったままで、大騒ぎ。

305 :293:2005/11/05(土) 09:37:18 ID:???
>>303
そういった衝突は、ほとんど起きないでしょ?という前提だから「楽観的ロック」なわけで
仕様です!でいいと思うけど。
頻繁に衝突するのであれば、楽観的ロックの採用が失敗だろうし…
多少、ユーザーの利便を考えるのであれば
・新旧レコードの各項目を比較して異なる部分をガイダンス表示、再入力してもらう
・場面にもよるけど、許されるのであれば別途新規登録に切り替える
ぐらいの作り込みでいいんじゃない?

306 :NAME IS NULL:2005/11/05(土) 09:55:31 ID:???
>>303
他のセッションからの操作で書き換わっていた場合は、今入力したのと書き換わっていた内容を並べて表示して
上書き、キャンセル、再修正あたりを選ばせるのが面倒だけど丁寧かもしれないですね。
ADO.NETがこういう仕掛けのフレームワークなんだけど正直使いづらい。

307 :NAME IS NULL:2005/11/05(土) 10:08:44 ID:???
売上システムの伝票入力などは操作がぶつかることはまずないので楽観排他が適当で、
予約システムなどは操作がぶつかるのでタイムアウト処理つきのロックフラグを使うことになりますね。
どっちにしろユーザー操作が途中に介在する以上データベースレベルのロック機構はそのまま使えません。

308 :NAME IS NULL:2005/11/05(土) 10:11:27 ID:dKysNCOJ
ロックは楽観と悲観の2つに分かれるわけで、
後はUIでどうカバーするか・・・って事でしかない。

Webは「いきなりブラウザを閉じる」なんてのが容易
だから、更新時にUIでカバーするしかない。

309 :308:2005/11/05(土) 10:15:00 ID:???
>>308
訂正:
UIだけじゃなく、ビジネスロジックでもカバーできるなわ。

310 :NAME IS NULL:2005/11/05(土) 11:42:58 ID:???
ロックしているユーザーの名前と電話番号を表示して
ユーザー同士で直接話し合いして解決すればいい。

311 :NAME IS NULL:2005/11/05(土) 11:50:02 ID:???
>>310
事務のおばちゃん一人に帳簿を管理させれば競合はない。

312 :NAME IS NULL:2005/11/05(土) 11:53:30 ID:???
>>311
おばちゃんの前に長い行列ができそうだ・・

313 :NAME IS NULL:2005/11/05(土) 12:20:41 ID:???
そもそもSELECT文しか投げてないのに排他制御のようなボトルネックが
あることが理解できなかった。パソコンサーバには8Gバイトのメモリを
積んであるのだがSQLServer2000の
SQLServer:Memory Manager\Maximum Workspace Memory(KB)
をパフォーマンスビュウワーで観測すると約1.2Gバイトしかないのだ。

このメモリ領域はソートに使われるのだが問題なのはソートするためには
一度に必要領域を確保する必要があることだ。100万行の100バイトの行を
ソートとするのには単純な掛け算で100Mバイトのメモリ領域を必要とする。
同時に実行されるSQLで使われてしまうとすぐにパンクするのでSQLServer
2000の内部にキュー(memory- grant queue)がありWorkspaceMemoryへの割
り振りを順番に調整している。これがボトルネックにな る。

java.sql.SQLException: [IBM][SQLServer JDBC Driver][SQLServer]
クエリ実行のためのメモリリソースを待機中にタイムアウトが発生しました。
クエリを再実行してください。

314 :NAME IS NULL:2005/11/05(土) 12:42:49 ID:???
>>313
大きいサイズのソートはディスクも使ったマージソートになるはずなのだが、なんか別の原因じゃね?

315 :NAME IS NULL:2005/11/05(土) 13:19:13 ID:???
>>312
そこでマルチプロセッサなマルチタスクおばちゃんお登場ですよ。

316 :NAME IS NULL:2005/11/05(土) 13:45:42 ID:???
>>315
で、競合が発生するのでロックが必要になって最初に戻ると

317 :303:2005/11/05(土) 14:10:42 ID:???
>>304
それも悩みなんだよね・・・

>>305
漏れも楽観的ロックで行きたいんだけど、そういう要求なんだよね・・・

>>306
上書き禁止なので、楽観的ロックだと入力がまるまる無駄になる。
ってことでなんとかならないかってのが今の状況です。

>>307
今のところはタイムアウトつきのロックフラグが最有力かなあ。

>>308
悲観的ロックってWebサービスで使える?

318 :NAME IS NULL:2005/11/05(土) 21:22:32 ID:???
>>317
そういう欲張り顧客の要望を叶える方法がただ一つ。
ajaxでkeep-alive。これ正解。

修正中画面上のjavascriptからXMLHTTPで
定期的に「更新中時刻」を更新するwebロジックにアクセスして
修正画面が開いている間は更新中時刻を常に進める。
それをロックフラグとして使えばいい。
アクセスは増大するがな。
webアプリで何とかするならそうでもするしかない。

319 :318:2005/11/05(土) 21:29:43 ID:???
書いたはいいがスレ違いじゃねーか
コンサル料取んぞゴルァ

320 :NAME IS NULL:2005/11/05(土) 21:32:48 ID:usWzqxrL
Javaアプレットってどうよ?
無理?
俺はぜんぜん詳しくないが。

321 :317:2005/11/05(土) 21:55:17 ID:???
>>318
知障?

322 :303:2005/11/06(日) 01:58:22 ID:???
>>321
おまいは誰だ!

>>318
Webアプリでもその設計はかなりイヤだなあ。
負荷は増大するわ、ロックが確実かどうかもわからんし。

323 :NAME IS NULL:2005/11/06(日) 08:18:34 ID:???
Windowsファイヤーウォール穴を開けるのはどうしたらいい?

324 :NAME IS NULL:2005/11/06(日) 08:56:27 ID:???
>>323
自己レスです。解決しました。

325 :NAME IS NULL:2005/11/06(日) 10:00:40 ID:???
>>322
いや、>>318はイントラネット等でネットワークが十分保証されている環境で
UIの質を向上させたい場合には十分有効だと思う。
というか、ロックをガチガチにしたいような業務アプリにおいて
ネットワークが保証されていないのは前提としてダメだろうし。

大体10秒おきに更新中時刻を更新してて30秒以上経ってればOKとか
時間にマージンとればロックは十分確実でしょ。

まあもちろん水際防御として
更新時に他人によって更新されていないかのチェックは必須。

>更新しようとしてはじめて更新できないって感じだよね?
>それって作業者からすると「ふざけんなゴルァ!」って感じだと思うんだが。

>負荷は増大するわ、ロックが確実かどうかもわからんし。

欲張るなよ。そこは明らかにトレードオフだろ。

326 :303:2005/11/06(日) 13:46:04 ID:???
>>325
> 大体10秒おきに更新中時刻を更新してて30秒以上経ってればOKとか
> 時間にマージンとればロックは十分確実でしょ。
トレードオフは理解できるけど、常に更新時間を進める必要はあるのか?
ロックフラグ+更新開始時間を持っといて、一定時間以内なら更新可能、
で十分だと思うんだが。さすがに10分以上放置してるやつはしらないよって感じで。

327 :NAME IS NULL:2005/11/06(日) 16:23:53 ID:???
漏れが前作ったのは、
リクエスト受付テーブルを作って、クライアントはそこにリクエストを入れるだけで、
別のプロセスがリクエストテーブルに入っているデータを順次処理していく、
結果を結果テーブルに書き込む。
クライアントは結果テーブルを参照してそれを表示する。

これやったおかげで多いときには1分間に千件くらいの処理でロックしまくりだったのが皆無になったよ。

328 :NAME IS NULL:2005/11/06(日) 16:39:24 ID:???
こんなんでコンサル料取れると思ってる>>318カコイイ

329 :NAME IS NULL:2005/11/06(日) 22:28:24 ID:???
>>326
>さすがに10分以上放置してるやつはしらないよって感じで。

「最長10分間しか更新する権利が保証されない」は
客がそれで納得するんであれば問題はない。
(俺の経験としては大抵期待出来ないがな)

問題なのは例えば更新画面でブラウザを閉じられた場合に
「最悪10分間更新する権利が無駄に独占される」危険性があるところだ。

俺の目には「10分じゃ短い!伸ばせ!」って言われて30分に伸ばした挙句
「誰もいじってないのに何でずっと更新中なんだ!」と怒鳴られる…
そんな筋書きが見えるわけよ。
タイムアウト時間を打算的に決めるというのはリスクが高いんだ。

330 :NAME IS NULL:2005/11/07(月) 07:55:45 ID:???
アプリの設計も大事だが、顧客を黙らせる方法も勉強しよう。

331 :284:2005/11/07(月) 10:59:06 ID:uPqWgWc6
遅レス申し訳ありません。

レコード毎にロックフラグを持たせるようにしようと思います。
どこかに、フラグを解除する機能も持たせます。(クライアント数が少ないので、今回はこれでいいかと・・・)
みなさん、ご返事ありがとうございました。

289は私ではありません。気分を害された方々、申し訳ございませんでした。
それでは、失礼いたします。

332 :NAME IS NULL:2005/11/07(月) 13:07:48 ID:???
つ バールのようなもの


333 :332:2005/11/07(月) 13:08:50 ID:???
...orz


334 :NAME IS NULL:2005/11/07(月) 13:10:23 ID:???
249 名前:<丶`∀´>(´・ω・`)(`ハ´  )さん[sage] 投稿日:2005/11/07(月) 12:08:57 ID:wvP3PvsM
つ バールのような物…


(・∀・)ニヤニヤ

335 :NAME IS NULL:2005/11/07(月) 13:22:52 ID:gk8Vftz2
ヘプシマンクリック!
http://pksp.jp/ero11/

336 :NAME IS NULL:2005/11/07(月) 21:15:21 ID:???
SQLServer 2005もVS2005と同じく11/17なのかな?

337 :NAME IS NULL:2005/11/07(月) 21:20:40 ID:???
Alter database KnowledgeMarket set single_user with Rollback immediate

は、シングルユーザーになるので、処理がうまくいかなかった場合は
通常ユーザーが使用できなくなります。
非常に危険なコマンドなので、やめにしましょう。

って言われたんだけどどして?
なにか呪いがかかってるのか?

338 :NAME IS NULL:2005/11/07(月) 21:56:24 ID:???
>>336
一緒。今日は、海の向こうでローンチイベントか・・・。

339 :288:2005/11/07(月) 22:34:09 ID:???
>>331
結局は>>289-292でもある俺様の案を選択かよw

340 :NAME IS NULL:2005/11/08(火) 11:01:12 ID:???
質問があります。
ストアドプロシージャで、
print 'A'
print 'B'
のようにした時、
クエリアナライザのデバッグで、
A
B
と続けて表示されず、
A行とB行の間に数行の空白行が入ってしまいます。
この空白行を出力しないように出来ないのでしょうか?

341 :NAME IS NULL:2005/11/08(火) 13:06:51 ID:???
うちはそんなことにはならんが

342 :NAME IS NULL:2005/11/08(火) 23:17:01 ID:???
>>340
クエリアナライザの環境設定で行間の値を設定しる

343 :340:2005/11/08(火) 23:19:12 ID:???
>>342
なんだ、そんな簡単なことだったんですね(^_^;)
早速試してみます。
ありがとうございました。


>>341
おまえんとこでどうなろが、どうでもいいんだよ!>知障

344 :341:2005/11/08(火) 23:19:43 ID:???
>>343
なんだ???コノヤローーーーーーーー!!!!!
テメェ人が親切に教えてやってるのに!!!!!!
ざけんなーーーーーーーーーーーーーーーーーーーーーー!
なぐるぞ!!!!
ゴルァ!!!!!!!!!!!!!


345 :340:2005/11/09(水) 11:08:05 ID:???
すみません。具体的にはどのようにすればいいのでしょか?
クエリアナライザのツールやオプションから設定するのではなく、
コマンドを打ってサーバの環境設定を変更するのでしょうか?

>>343
誰だ

346 :NAME IS NULL:2005/11/09(水) 12:12:42 ID:???
>>345
T-SQLデバッガの仕様じゃない?。普通にクエリで実行すれば空白は入らない。

347 :NAME IS NULL:2005/11/09(水) 19:41:32 ID:???
システムを作る時に、どんなに沢山テーブルがあっても
1つのDBの中にテーブルをまとめるのが普通なのでしょうか?

リレーションシップの作成も同じDB内でしか出来ないみたいだし
ADO.NETとかで別DBのテーブルがうまく結合できなかったりするみたいだし。

348 :NAME IS NULL:2005/11/09(水) 19:48:07 ID:???
1つのDBの中にテーブルをまとめることで何か不都合でもあるの?

349 :NAME IS NULL:2005/11/09(水) 19:55:49 ID:???
>>348
うちのシステムはやたら沢山のDBに分かれてるもんで・・・(自分が開発したわけじゃないけど)
一から設計するならまとめるもんなんでしょうか


350 :NAME IS NULL:2005/11/09(水) 20:14:03 ID:???
業務上、相互に参照する可能性のないテーブルは別々のDBでもいいとおもうけど。
でも全テーブル数が少なければ(20〜30程度など)、1つのDBにまとめちゃうよ。

351 :347:2005/11/09(水) 20:55:15 ID:???
>>350
テーブルは数えてないけど数百(1000よりはずっと下)です。相互参照は必要なんだけど(´・ω・`)
やっぱ1つのDBにまとめたほうがいいんですね。なんでこうなってんだろ。

逆に参照が必要なテーブル同士を別のDBに分離するのって、バックアップが楽になるぐらいで、
それ以外にはなんかメリットあるのかな?



352 :NAME IS NULL:2005/11/09(水) 21:10:55 ID:???
>>351
数百もテーブルがあると、グループ分けできるテーブルごとにDBを分けたくなるかも。
まとめた方がいいと思いますが。


353 :NAME IS NULL:2005/11/09(水) 21:51:17 ID:???
>>351
それって迷うよね
今は○○システム(販売だとか会計だとか)単位に分けるようにしてるけど
相互参照は他のDB見るビュー作ってるから、PGは基本的に1つのDBに
しか接続してない形

あとサーバでわける、インスタンスで分ける、DBで分けると選べるけど
インスタンスで分ける意味って全然わからない...
パッケージ導入する場合とか使うのかな?
(パッケージだけ別領域にしたいということで)

354 :347:2005/11/09(水) 23:07:45 ID:???
>>353
なんだよ?!>ダメおやじ

355 :NAME IS NULL:2005/11/09(水) 23:15:42 ID:???
>>354
そのパターン、もう飽きた。

356 :NAME IS NULL:2005/11/09(水) 23:44:49 ID:???
一つのDBの中で所有者で分けるというのもあるでよ。
微妙だけどね。

MDFファイルを分けるというのもあるがこれはパフォーマンス向上のためなので
あまり関係ないか。

357 :NAME IS NULL:2005/11/09(水) 23:47:15 ID:???
とりあえず .NET Framework 2.0 はインスコした。
なんでこれが要るんだろう。重そうな悪寒。

SQL Server 2005 Express Edition (旧MSDE) と
SSMSE を明日入れてみる。

ttp://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/default.mspx

358 :NAME IS NULL:2005/11/10(木) 00:28:47 ID:???
>>357
これってタダ?
ウヒョー

359 :NAME IS NULL:2005/11/10(木) 01:08:15 ID:???
SQLServer Express は結構前からβ出てるよ
平たく言っちゃえばMSDE+クエリアナライザ の2005版

360 :NAME IS NULL:2005/11/10(木) 02:05:51 ID:???
>>357
そうか
もうアメリカじゃ正式版落せるんだ

2005Expressは4GBまでDB拡張できるから簡単な用途に使うには嬉しい
DTS無いのはあとあと響いてきそうだけど

361 :NAME IS NULL:2005/11/10(木) 10:49:52 ID:???
DTS無いのかァ ('・c_・` )

362 :NAME IS NULL:2005/11/10(木) 11:03:03 ID:6bUbvO8W
http://63.88.172.58/SQLServer/Article/ArticleID/44557/44557.html

32ビットのSQLServer2000の仮想記憶は/3GBをboot.iniにつけた状態で
3Gバイト、つけてない状態で2Gバイトに限られる。

AWEを使えば仮想記憶の限界を越えてメモリーを使うことができる。
重要な点はAWEのメモリーはデータベースのページキャッシュにしか
使われないことだ。プランキャッシュ、ワークスペースメモリー、
ロック、ユーザコネクション、カーソル、バックアップとリストアで
使用するメモリーは仮想記憶でしか使うことができない。

このような理由で32ビットのシステムに3Gバイトを越えるメモリーを
積むメリットは少ないのだ。


363 :NAME IS NULL:2005/11/10(木) 11:13:21 ID:6bUbvO8W
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/failclus.mspx

搭載メモリとBoot.iniの設定
4G以下 /3GB AWEなし PAEなし
4G〜8G /3GB AWE PAE
8G以上 /3GBなし AWE PAE


364 :NAME IS NULL:2005/11/11(金) 11:28:29 ID:???
列をあとからID列にすることは出来ないのかしら

365 :NAME IS NULL:2005/11/11(金) 14:22:37 ID:???
ストアドっての今日はぢめて使ったんですが次がうまくいきません

CREATE PROCEDURE hogehoge @p int AS
SELECT TOP @p * FROM hoge

解決策を教えてください

366 :NAME IS NULL:2005/11/11(金) 14:58:59 ID:???
declare @sql nvarchar(4000)
set @sql='select top '+convert(varchar(10), @p)+' * from hoge'
sp_executesql @sql



367 :365:2005/11/11(金) 15:05:34 ID:???
>>366
最後にEXEC付けたらできました!
sp_executesqlを入れりゃヨカタんですね
ありがとうございます

368 :NAME IS NULL:2005/11/11(金) 16:16:13 ID:???
入れりゃよいっていうか、変数で指定できない部分に変数使いたいときは
こうするしかないってことね。

うちで作ってるのはフィールド名からテーブル名、DB名に至るまで変動的だから
こんなプロシージャばっかだよ。

369 :NAME IS NULL:2005/11/11(金) 19:57:22 ID:???
で、まだまだ2000で、2005は手をつけるべきではないですかね?

370 :NAME IS NULL:2005/11/11(金) 20:08:26 ID:???
付けたきゃ付けろよ

371 :NAME IS NULL:2005/11/11(金) 21:43:55 ID:???
とりあえず開発PCにExpress入れよう

372 :NAME IS NULL:2005/11/11(金) 21:57:57 ID:???
>>364
できるよ

373 :NAME IS NULL:2005/11/11(金) 22:01:02 ID:???
でも>>366のやり方だとクエリオプティマイザが全然役に立たなくなるんだよなー
しかしなんでTOPに変数使えないんだろうね。

374 :NAME IS NULL:2005/11/11(金) 23:30:47 ID:???
オプティマイザ使いたいんだったら、一時テーブル使えばいいじゃん

375 :NAME IS NULL:2005/11/12(土) 01:51:06 ID:???
table変数か何かにcursorで必要な列数だけぐるぐる回してinsertするか
identity付きで全体を突っ込んでから必要な列数以上をdeleteか、だな

どっちにしてもあんまり格好良くはないが…

376 :NAME IS NULL:2005/11/12(土) 14:52:10 ID:7r4jIEe9
お世話になります。

DateTime型について質問なんですが、
例えば「2006/01/01 00:00:00」という値を入れても
勝手に「2006/01/01」になってしまうんですが、
これは仕様なんでしょうか?
他の時分秒ならちゃんと値が入るんですが・・・

377 :NAME IS NULL:2005/11/12(土) 16:01:36 ID:???
>>376
表示上の問題でDateTimeの中に時分秒は必ず入ってる。
00:00:00 のとき時分秒を表示しないクライアントソフトはわりとみかける。
ソフトによって方法は違うが、表示したいなら書式を指定すればできることが多い。

378 :NAME IS NULL:2005/11/12(土) 16:27:28 ID:nb8xqWrU
こんなこと質問すると叩かれることはわかってるんだが・・・

テーブルdatetimeで格納してる日付データを範囲で取り出すのだけど
2000/01/01から2005/012/01までってパターンなら簡単に書ける。
しかし
01/01から12/01までのデータ抽出をしたいんです。
複数行のストアドなら同じく書けますが
これを一行のクエリに収めたいのですができるのでしょうか??

偉い人教えてください!!

379 :NAME IS NULL:2005/11/12(土) 17:24:17 ID:???
>>378
検索条件に関数を使うのはよいことではないがこんなところで。
where MONTH(日付) * 100 + DAY(日付) <= 1201

380 :378:2005/11/12(土) 19:36:49 ID:???
>>379
おお〜!!
その方法がありましたね!!
すっかり忘れておりました・・・orz

ありがとうございます!

381 :376:2005/11/12(土) 21:56:28 ID:7r4jIEe9
>>377
どうもありがとうございます。
表示上だけの問題なんですか?
現在ASPで開発を行っているのですが、
そこで値を取得しようとしても00:00:00に関しては取得できないのですが・・・

382 :NAME IS NULL:2005/11/12(土) 23:21:37 ID:???
>381
フォーマットを指定して文字列に変換汁

383 :NAME IS NULL:2005/11/13(日) 10:12:11 ID:???
既存のテーブルのカラム名の命名規則が腐ってて別名をつける方法でもあれば助かるんだけど・・・
違う名前でアクセスするってViewを作るしか無い?

ついでに質問ですが、仮に SELECT * FROM originaltable なんていうViewを作ってデータを取り出すと
元のテーブルに直接にアクセスするのと比べてオーバーヘッドはあるんでしょうか?
クエリアナライザで実行プランをみると変わらないような感じですが

384 :NAME IS NULL:2005/11/13(日) 11:08:11 ID:???
>>376
select replace(CONVERT(char(19),getDate(),120),'-','/')
このサンプルでどうかね

>>383
ほとんど変わらんよ

さらにSELECT *のクエリだったらそのviewに対して
UPDATEとかも出来た…はず(うろ覚えw)

385 :NAME IS NULL:2005/11/13(日) 11:46:24 ID:???
DTSなかったらどうやってデータをインポートすればいいんだ?


386 :NAME IS NULL:2005/11/13(日) 15:37:03 ID:p3B2sPUP
SQL Server BrowserとかいうのでAccessみたいにデータを簡単にいじれると聞いたのですが、
そのサービスを立ち上げてlocalhost:1433に接続すればいいのでしょうか?


387 :NAME IS NULL:2005/11/13(日) 17:07:55 ID:???
>>379
>検索条件に関数を使うのはよいことではない

詳しく

388 :376:2005/11/13(日) 17:17:36 ID:???
>>382>>384
どうもありがとうございます。
今は実行環境がありませんので、
明日試してみたいと思います。

389 :NAME IS NULL:2005/11/13(日) 18:10:16 ID:???
>>387
検索対象のフィールドに関数や演算をすると索引が使われないってことじゃないかな。
他の条件で十分絞り込めるならその限りではないが。

390 :NAME IS NULL:2005/11/13(日) 20:42:32 ID:???
>>385
BCP

>>386
まず何を使ってるのか明らかにしろ。
自分がサトラレだとでも思ってるのか?

391 :NAME IS NULL:2005/11/13(日) 21:51:13 ID:???
mdfやldfファイルをSQL Server Management Studio
で編集できますか?


392 :NAME IS NULL:2005/11/13(日) 23:35:11 ID:RgU4r/VF
教えて下さい。

select * from X with(rowlock updlock)

で、他の行のupdateクエリとデッドロックになる可能性はありますか?
updlockの場合、対象行以外もロックするのでしょうか?
よろしく、お願いします。

393 :NAME IS NULL:2005/11/13(日) 23:44:08 ID:HWl+tCyj
>>392

デッドロックします。

対象行以外をロックするかは分離レベルに依存します。
スキャンがインデックスを使っているか表を頭からなめてるかでも
違うでしょうね。

SQLServer2005のSI分離レベルを使えば解決するかもしれません。

394 :NAME IS NULL:2005/11/13(日) 23:57:46 ID:???
2005の新機能ってどこかにまとめてない?
OracleでいうMERGEが使えるとか、INTERSECTが使えるとか。

395 :NAME IS NULL:2005/11/14(月) 13:16:17 ID:67rhr+ds
仮想SQLServerへの接続

Article Q273673,
“SQL Virtual Server Client Connections Must Be Controlled by Clients,”
in the Microsoft Knowledge Base at
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q273673

クラスターのadminによってSQLServerがフェイルオーバされたときは
TCPのリセットパケットは送信されないが、kill.exeなどによってOSにSQLServerプロセスが
強制終了された場合はTCPのリセットパケットは送信される。

この仕様はquery timeoutパラメータを設定してない場合やquery timeoutパラメータを0に
セットしているアプリに影響する。

アプリがquery timeoutを設定してないとき、フェイルオーバが発生したあと
使用中のコネクションはESTABLISHED状態で残り続ける。

使用中のコネクションがcloseされないで、以降TCPパケットが送られてこないと
コネクションは完全なアイドル状態になってしまう。

フェイルオーバはクライアントアプリにTCPのリセットパケットを送らないので
コネクションは照会結果を無限に待ち続けてしまう(query timeoutを無限に設定したとき)。
そしてコネクションが応答しなくなる(ハングアップする)原因になる。

この問題をアプリの視点から解決するためにquery timeoutのパラメータを有限な値に設定すべきである。

396 :NAME IS NULL:2005/11/14(月) 17:22:55 ID:67rhr+ds
サーバマシンの障害時はコネクション喪失の検知のされかたで動作がことなります。
クライアントが情報を読んでいる途中ならデータが来ないのでコネクションの喪失はすぐに検出されます。
クライアントが検索結果を待っている場合は少し違います。
このときの動作はクライアントのコンピュータのKeep Aliveの設定に依存します。
Windows2000ではKeep Aliveはクライアントのコネクション単位にコーディングできます。
デフォルトは2時間で、死んだソケットは2時間以内に検知されてクライアントはエラーメッセージを受け取ります。

キー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
値の型: REG_DWORD - ミリ秒
設定可能な値の範囲: 1 - 0xFFFFFFFF
規定値: 7,200,000 (2時間)
説明: The parameter controls how often TCP attempts to verify
that an idle connection is still intact by sending a keep alive packet.

どれくらいの頻度でTCPがキープアライブパケットを送信し、
アイドル状態のコネクションが生きているかどうか確認するかを設定します。

リモートのシステムが到達可能で機能しているならキープアライブの応答を受信確認します。

キープアライブパケットはデフォルトでは送信されません。
この機能はアプリがコネクション単位に有効にすることもできます。


397 :NAME IS NULL:2005/11/16(水) 22:28:30 ID:???
明日はバルマーが吼えるのか?

398 :NAME IS NULL:2005/11/16(水) 22:34:10 ID:???
>>397
もうほえた
ttp://pc.watch.impress.co.jp/docs/2005/1116/ms2.htm

399 :NAME IS NULL:2005/11/17(木) 10:08:10 ID:???
なにこのつるっぱげ

400 :NAME IS NULL:2005/11/17(木) 18:34:08 ID:/hXyVfhy
バルマーって人格障害者じゃないか。
これじゃ業績悪化するわな。


401 :NAME IS NULL:2005/11/17(木) 20:38:51 ID:???
今日の午後一のBのセミナーは無様だったなw

402 :NAME IS NULL:2005/11/17(木) 20:43:44 ID:???
>>401
詳しく

403 :NAME IS NULL:2005/11/17(木) 23:32:33 ID:???
>>401
行きたかったんだけどダメだったん?

404 :NAME IS NULL:2005/11/19(土) 01:56:26 ID:WVGMvt0Y
質問でつ。
トランザクションの頭で制約を無効にして、
最後にコミットする前に有効に戻す方法とかストアドってあります?

ADO.Netから、データアダプタのUpdateメソッド使うと、INSERTとDELETEが
分離できないので外部キー制約をシンプルにかわす方法がわかりません。
INSERT時には被参照側から、DELETE時には参照側からテーブルを更新
すればもちろんかわせるのだけど。

よろしくお願いします。

405 :NAME IS NULL:2005/11/19(土) 17:06:44 ID:???
>>404
トランザクションやセッション単位でそういう機能はみたことない。
あるのはALTER TABLEを使う方法だから、メンテナンスなどでまとめてデータを流し込むとき用だな。
ALTER TABLE xxx NOCHECK CONSTRAINT ALL
ALTER TABLE xxx CHECK CONSTRAINT ALL
ALTER TABLE xxx DISABLE TRIGGER ALL
ALTER TABLE xxx ENABLE TRIGGER ALL

406 :NAME IS NULL:2005/11/19(土) 19:56:12 ID:???
テーブル名を指定するときに
select * from オーナー名.テーブル名
のように書きますが、オーナー名を省略できるように
することは可能でしょうか。

407 :NAME IS NULL:2005/11/19(土) 20:35:57 ID:???
>>406
ルールあるよ。同じテーブル名が存在した場合、オーナー名を省略すると
自ユーザ>dbo>他人のユーザ
で優先される。

408 :NAME IS NULL:2005/11/19(土) 21:42:38 ID:???
>>407
ということは、自ユーザのテーブルしかない場合は
省略可能ということですよね。

それがどうもそうならなくて・・・

409 :NAME IS NULL:2005/11/20(日) 00:53:19 ID:???
デフォルトは現在のログインに結びついてるユーザだよ
Windows認証とかやってたりしてない?その場合はdboになるのだが。

410 :NAME IS NULL:2005/11/20(日) 06:20:21 ID:???
>>408
そのユーザーにdb_ownerのロールが付いてればdbo扱いになるから、
自ユーザーのスキーマより、dboの方が優先するんじゃないかな。

411 :NAME IS NULL:2005/11/20(日) 07:30:20 ID:???
>>409-410
お2人のご回答をヒントになんとか解決できました。
ありがとうございました。

412 :NAME IS NULL:2005/11/20(日) 12:17:52 ID:???
どのデータベースを使っているときでも使える
プロシージャって作れますか?

413 :NAME IS NULL:2005/11/20(日) 16:37:37 ID:???
>>412
DBエンジンのことか?
Ora,MS,Syb,myでもってことか?

414 :NAME IS NULL:2005/11/20(日) 18:18:09 ID:???
>>413
ここは何のスレですか?

415 :NAME IS NULL:2005/11/21(月) 00:24:00 ID:x+mH3hY9
LinuxからSQLServerにODBCでつなぎたいと思っているのですが
調べたらiODBC,FreeODBC,unixODBC,OpenLinkODBCなどたくさん出てきました。
無難で安定しているものを選びたいのですが、どのドライバがよいのでしょう。
もしお薦めのものとかありましたらよかったら教えてください。
環境はちょっと古いRedHat7.2を使っています。


416 :NAME IS NULL:2005/11/21(月) 10:23:06 ID:???
初歩的な質問だと思うのですが、(local)を接続文字列で指定して接続ができないというのは何が問題なのでしょうか?
サーバー名を指定した場合には接続できます。

417 :NAME IS NULL:2005/11/21(月) 10:28:32 ID:???
>>415
DataDirect社の製品も採用実績が多いから候補に入れてみたら。

418 :NAME IS NULL:2005/11/21(月) 21:22:32 ID:???
>>416
"."とか"(local)"を指定した場合は接続プロトコルは
Shared Memoryのはず。
それが使えるようになってるか確認してみては。

419 :NAME IS NULL:2005/11/22(火) 08:59:14 ID:???
>>418
みたらSharedMemoryだけ有効になってますた。
TCPとNETBeui有効にしてもつながりません・・・orz

420 :NAME IS NULL:2005/11/22(火) 13:32:31 ID:???
プロバイダには何つかってんの?
SQLネイティブクライアント?

421 :NAME IS NULL:2005/11/22(火) 13:35:32 ID:???
Provider=SQLNCLI.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=(local)
漏れのは↑でつながるけど。

422 :416:2005/11/22(火) 17:01:34 ID:???
server=マシン名\\SQLEXPRESS;Integrated security=true ;でやると接続できてます。
Sqlネイティブクライアントと使ってます。

423 :NAME IS NULL:2005/11/22(火) 17:47:17 ID:???
>>422
インスタンス名が付いてるならそれは省略できない。
.\SQLEXPRESS でいける。
もしかしたら (local)\SQLEXPRESS ともかけるかもしれないからやってみて。

424 :NAME IS NULL:2005/11/22(火) 18:51:53 ID:???
SQLEXPRESSインスタンスって、勝手にインストールされちゃうあれか。
設定なしでDB使えるのはいいけど、もっとましな方法なかったんだろうか。

425 :416:2005/11/22(火) 20:04:13 ID:???
>>423
つながりますたーーーーーー!
インスタンスとかよくわかってません。勉強してきます。
Sql2005Express使ってるんですが、ManagementStudioのインストール時に例外が発生する。何回か起動していたらまったく起動しなくなったなどバグ多数です(´・ω・`)
全アンインストール後再インストールで何とか動くようになりますた。

426 :NAME IS NULL:2005/11/23(水) 09:33:30 ID:???
SQLServer Expressはbetaが取れた正式版がリリースされたけど
なんでExpress ManagerはまだCTPなんだろうな

ttp://www.microsoft.com/downloads/details.aspx?familyid=82AFBD59-57A4-455E-A2D6-1D4C98D40F6E&displaylang=en

427 :NAME IS NULL:2005/11/23(水) 16:30:31 ID:???
SQLServer 2000 or 2005 で制約をコピーする方法ってある?
SELECT INTO でテーブル定義はコピーできるけど、
これだとNOT NULL制約しかコピーされないんだよね・・・

428 :NAME IS NULL:2005/11/23(水) 22:52:24 ID:???
>>427
何をしようとしてるの?
プログラムロジック中に動的にテーブルを生成しようとかしてるのかな?


429 :427:2005/11/23(水) 23:39:25 ID:???
DBを使ったテストを簡単にできないかと試行錯誤中なのでつよ。

テスト開始時にどんなデータがはいってるか分からんから、
コピーしたテーブルを使ってテスト開始時の状態を特定したいわけ。

430 :NAME IS NULL:2005/11/24(木) 00:16:00 ID:???
それってデータだけあればいいんでネーノ

431 :NAME IS NULL:2005/11/24(木) 08:14:46 ID:???
最後にロールバックかければいいんでねーの?

432 :NAME IS NULL:2005/11/24(木) 11:34:25 ID:???
そういえば、select intoではdefaultもコピーされねんだよな。


433 :427:2005/11/24(木) 22:38:26 ID:???
>>430
いや主キーの重複とか外部制約とかないと、
制約があることに依存してるテストができないじゃん

>>431
今その方法で実験中。うまくいってるっぽい。
最初にデータ全削除、初期データINSERTってやってるから
パフォーマンスは良くないけどね・・・

434 :NAME IS NULL:2005/11/24(木) 22:55:02 ID:???
>433
DBのファイルをコピーして、別DBにアタッチしたほうがはやいんジャマイカ。
それで同じ環境できるよ?

435 :NAME IS NULL:2005/11/24(木) 23:06:01 ID:???
DB名を変えてRESTORE DATABASEでもいいな

436 :NAME IS NULL:2005/11/24(木) 23:23:46 ID:???
漏れも >>434-435 の方がいいと思うけど。。。
最後にロールバックをかけない手順で上手くいっているのかもしれんが、
実際の動作とは異なる状態でテストをするのはチト怖い。

437 :436:2005/11/24(木) 23:30:44 ID:???
漏れは何を書いてんだ。。。 orz

最後にロールバックをかけない
 ↓
最後にロールバックをかける

438 :427:2005/11/24(木) 23:58:51 ID:???
>>434,>>435
それだとテスト開始時にDBの状態が不定じゃない?

>>436
> 実際の動作とは異なる状態でテストをするのはチト怖い。
これがよくわからない。
今の手順は↓感じ。要はDBUnitを.NETでやろうとしてるわけね。
実際の動作とどこが違うの?
1.トランザクション開始
2.DBのデータ全削除
3.初期データのINSERT
4.テストコード実行
5.DBの状態をチェック
6.ロールバック

439 :NAME IS NULL:2005/11/25(金) 01:20:45 ID:???
>>438
>それだとテスト開始時にDBの状態が不定じゃない?
自分が望む状態でバックアップを取っておけばいいんじゃないの?
万が一テストで壊してしまったらバックアップから戻せばいいんだから確実だと思う。

440 :436:2005/11/25(金) 01:55:15 ID:???
>>438
テストのフェーズ次第だから、あまり真剣になられると困ってしまふ。
ユニットテストならそれでいいのかもね。
結合テストとか負荷テストのフェーズで正常時はデータ書き込み、コミットの流れなのに
データ書き込み、常にロールバックだと実際の動作とは異なるし…という程度の意味。
んで、皆も書いているけど、DBの全データ削除、初期データをINSERTをした状態のDBを
保管しておいて、アタッチした方が楽なのでは?ということデス。

441 :NAME IS NULL:2005/11/25(金) 05:36:51 ID:???
DTSが使えるならそれでコピーが一番確実、dtsrun というコマンドベースのi/fもある。
使えないで、バックアップ・リストアなどデータベース全体にかかわる操作をしたくないなら、
テスト前に select into や bcp でデータを退避しておいて
テスト後にテーブルを truncate してから退避したデータをinsert selectやbcpで戻す。
プログラムが動的にテーブルの構造を変えてしまうようなものだと駄目ですけどね。

442 :NAME IS NULL:2005/11/25(金) 14:36:22 ID:???
MSDNマガジンに、ロールバックを使ったUnitTestアプローチに触れた記事があります。
参考になるかどうか分かりませんが一応。

Know Thy Code: Simplify Data Layer Unit Testing using Enterprise Services -- MSDN Magazine, June 2005
ttp://msdn.microsoft.com/msdnmag/issues/05/06/UnitTesting/default.aspx
コードの再確認: エンタープライズ サービスを使用したデータ層単体テストの簡略化 -- MSDN Magazine, 2005 年 6 月
ttps://www.microsoft.com/japan/msdn/msdnmag/issues/05/06/UnitTesting/default.aspx

443 :NAME IS NULL:2005/11/25(金) 16:42:47 ID:euFM0n56
http://japan.cnet.com/news/ent/story/0,2000047623,20091397,00.htm

インテルのハイパースレッディング技術で
「SQL Server」サーバ性能の低下が発生か


444 :427:2005/11/25(金) 22:17:21 ID:???
いろいろな方法があるものでつな。
まあ今やろうとしてるのは単体テストで、肝はDBの初期状態の特定と状態チェックなんだよね。
結合とか総合の時に教えてもらったアイデアを検討してみまふ。

ところでDBの状態チェックは自動化してないの?
漏れはO/Rマッピング使ってそこも自動化しようと目論んでまつが。

445 :NAME IS NULL:2005/11/25(金) 22:57:11 ID:nfczkiDK
T-SQLで、カーソル定義するときに、条件をつけて、Aならこっちのカーソルを、Bならこっちのカーソルを実行


というようにはできないだろうか…

446 :NAME IS NULL:2005/11/26(土) 00:18:25 ID:???
ストアドにC#が使えてしまう罠。

447 :NAME IS NULL:2005/11/26(土) 01:32:18 ID:???
カーソル使わないで一時テーブルで何とかしようと思う

448 :NAME IS NULL:2005/11/26(土) 22:51:53 ID:???
これってカーソル?

http://erox.s7.x-beat.com/up/img/7157.jpg


449 :NAME IS NULL:2005/11/26(土) 23:52:55 ID:???
>>448
カレーだな

450 :NAME IS NULL:2005/11/27(日) 00:20:26 ID:???
SQLServer2005のエンタープライズマネージャの変わりになるやつは
↓をGUIでできるようになってるかなぁ?

−−−−
Update
  更新テーブル名
set
  項目名1 = 参照テーブル名.項目名1,
  項目名2 = 参照テーブル名.項目名2,
   :
  項目名n = 参照テーブル名.項目名n
from
  更新テーブル名 INNER JOIN 参照テーブル名 ON
  更新テーブル名.結合項目名 = 参照テーブル名.結合項目名
where
  抽出条件式

−−−
なんでGUIでUPDATEで他のテーブル参照することができないのだろうか
AccessのADPでもできないし
利用頻度多いと思うんだが手抜きなのかしら

451 :NAME IS NULL:2005/11/27(日) 00:23:02 ID:???
確かにホスト時代の老害が書いたシステムとかで
ストアドが片っ端から全部何をするにもカーソル使って
where無しの結果から一行ずつ処理するように書いてあったりすると
>>448って感じだな

452 :NAME IS NULL:2005/11/27(日) 00:29:57 ID:???
>>450
使いやすいようにGUIで表現するのが難しいからじゃない?

ちょっと考えても画面からテーブルのカラムをぽちぽち関連付けたりするんなら
いい編集機能があるエディタでがーっと書いた方が手っ取り早い気がする。

つーかクエリアナライザのエディタ機能のクソッぷりは
Express Managerでも大して変わってなかったなorz

453 :NAME IS NULL:2005/11/27(日) 00:52:07 ID:???
>>452
AccessのMDBだと昔から実現できてるんだよね
だからGUIで表現できないってことはないと思うんだよ
他にもGUIだとサポートされていない機能いろいろあるけど
UPDATEに限って言えば問題ないような気がするんだけどなぁ

SQLServer2005ぐらいになったらインテリセンスが導入される
ぐらい成長して欲しかったんだけどw

454 :NAME IS NULL:2005/11/27(日) 03:09:17 ID:???
>>448
絶対あけるな
うんこの画像

455 :NAME IS NULL:2005/11/27(日) 08:40:13 ID:???
>>452
SQLライターはストイックなんだよ。
あれでストアド書くのが骨頂なんだ。
SQLは例外も飛ばさないしね。 良くも悪くも…

456 :NAME IS NULL:2005/11/28(月) 09:30:57 ID:???
人生をロールバックできませんか?

457 :NAME IS NULL:2005/11/28(月) 10:26:24 ID:???
つまんねーカキコすんな

458 :NAME IS NULL:2005/11/28(月) 11:34:46 ID:???
>>456-458
>>457

459 :NAME IS NULL:2005/11/28(月) 16:59:50 ID:???
ntext型のフィールドを持つテーブル変数に対してUPDATETXTってできないのでしょうか?

UPDATETEXT @test.doc @pointer NULL @insertText

に対して
「'@test'の近くに無効な構文があります。」
と怒られるのであります。

@testはテーブル変数でdocというntext型のフィールドを定義してあります

460 :NAME IS NULL:2005/11/28(月) 19:43:26 ID:Mysz4w2G
教えてください。
SQLServer2000で

id  a1  b1  c1  a2  b2  c2  a3  b3  c3 ・・・・abcが数十組ある
-------------------------------------------
n01 null null null null null null  ・・・
n02 あ  い  う  null null null ・・・
n03 え  お  か  き  く  け  null ・・・
n04 null null null null null null ・・・
n05 こ  さ  し  null null null ・・・

のようなテーブルを

id  a  b  c
----------------
n01 null null null
n02 あ  い  う
n03 え  お  か
n03 き  く  け
n04 null null null
n05 こ  さ  し

のようにするにはどのようにしたらよろしいですか?




461 :NAME IS NULL:2005/11/28(月) 19:51:13 ID:???
テーブルを設計しなおす

462 :NAME IS NULL:2005/11/28(月) 19:58:38 ID:???
>>461
もとのテーブルはいじれない状態なんです。
こういうパッケージソフトなんです。


463 :NAME IS NULL:2005/11/28(月) 20:12:27 ID:???
>>462
一組単位(a,b,c)で全部がNULL or 全部が非NULLになるという前提で、
こんなビューまたはストアドを作成する

select id,a1,b1,c1 from t
union
select id,a2,b2,c2 from t where coalesce(a2, b2, c2) is not null
union
select id,a3,b3,c3 from t where coalesce(a3, b3, c3) is not null
...
order by id;

464 :NAME IS NULL:2005/11/28(月) 20:27:07 ID:???
>>463
ありがとうございます。
実際はもうすこし複雑な構造なので、これを基に
試行錯誤してみます。




465 :NAME IS NULL:2005/11/29(火) 03:23:45 ID:???
ビュー作って、ユニオンして、ディスティンクトかな。


466 :NAME IS NULL:2005/11/29(火) 17:00:15 ID:???
>>463
全部がNULL or 全部が非NULLになるという前提 が覆ったとしたら
ちょっと手間になるけど

select id,a1,b1,c1 from t
union
select id,a2,b2,c2 from t
union
select id,a3,b3,c3 from t
 :
の結果からa is null and b is null and c is nullの行を削除、
その後元テーブルのidと外部結合、とかが一番直感的かなあ。

467 :NAME IS NULL:2005/11/29(火) 19:03:46 ID:???
結果セットを2つ返すSP呼んだ場合
どうやって2つの結果セットを取得できるのでしょうか?
1つだけなら取得できるのですが…


468 :NAME IS NULL:2005/11/29(火) 19:22:43 ID:???
>>467
ADOならRecordset#NextRecordset

469 :467:2005/11/30(水) 10:51:16 ID:???
>>468

説明足らずですみません。
あるSPの中で2つの結果セット返すSPを呼んでイジリたいのです。


470 :NAME IS NULL:2005/11/30(水) 18:28:48 ID:???
>>469
あまりいい方法は無いと思う。
二つの結果セットが同じ数で同じ並び順で互換のある型を返すなら、
insert into #tmp exec sp_xxx
で2つのセットがunion allされた感じで取得できる。なぜか#tmpのところにtable型は使用できない。
呼び出されるほうのストアドをいじれるならカーソルを2つ返すように変更するのが無難かな。


471 :NAME IS NULL:2005/11/30(水) 23:39:48 ID:???
ttp://www.atmarkit.co.jp/ad/questsoft/0511sql/spotlight.html

472 :NAME IS NULL:2005/12/02(金) 17:13:49 ID:2VDowwy3
PHPからMSSQLを使用しているのですが、
TEXT型にマルチバイト10,000文字を突っ込んでも4096バイト分しか保存されないんです。
何か制約があるのでしょうか?
ちなみに使用しているエディションはDeveloperでPHPは4.4.0です。

473 :sage:2005/12/02(金) 17:41:04 ID:2VDowwy3
>472
自己レスです。
SET TEXTSIZEで解決しました。

474 :NAME IS NULL:2005/12/05(月) 15:44:07 ID:???
>473
詳しく

475 :NAME IS NULL:2005/12/05(月) 17:58:15 ID:???
>>474
PHPはよく知らないけどDB-Library を直接操作してるってことね。
SET ANSI_NULLS もOFFのままなのかな。

デフォルトは4Kらしい。MSDNより・・
>SQL Server ODBC ドライバと SQL Server 用 OLE DB プロバイダは、
>接続時に自動的に TEXTSIZE を 2147483647 に設定します。

476 :NAME IS NULL:2005/12/06(火) 02:41:46 ID:???
MS的にはODBC接続はもう時代遅れ扱いだね

477 :NAME IS NULL:2005/12/06(火) 17:49:07 ID:SOr+Ue5p
毎度どうも。
テーブルを色々整理して、ストアドのSQL文を今必死こいてやっているのですが、素朴な質問いいでしょうか?
INNER JOINを使ってテーブルを結合し値を拾っているのですが、ものすごくINNER JOINの数があります。
とりあえず11個あるのですが、よくないでしょうか?
INNER JOINを増やすよりもストアドを増やしたほうがいいのでしょうか?


478 :NAME IS NULL:2005/12/06(火) 18:03:44 ID:???
>>477
>INNER JOINを増やすよりもストアドを増やしたほうがいいのでしょうか?
ここのところの意味がちょっとよく分からない。

しかし必要な結果セットを得るために11の結合が要る、というのは
なんか設計が微妙な気がするな…。

479 :NAME IS NULL:2005/12/06(火) 18:14:19 ID:tEQ2Ls8f
Access2000からSQLServer2000に移行中なのですが、
Accessではパラメータクエリをネストして使ってました。


<クエリ1>
SELECT * FROM テーブル1 WHERE 項目1 = [パラメータ1]
<クエリ2>
SELECT * FROM クエリ1 WHERE 項目2 = [パラメータ2]

これをSQLServerに移植しようとしたとき、
クエリ1に相当するプロシージャ1は作れたのですが、

<プロシージャ1>
CREATE PROCEDURE プロシージャ1(@パラメータ1 int) AS
SELECT * FROM テーブル1 WHERE 項目1 = @パラメータ1
GO

クエリ2に相当するプロシージャ2が作れません。
どうすれば同等の処理を行えるか、教えて貰えませんか?

480 :478:2005/12/06(火) 18:16:00 ID:???
>>478
誠申し訳ない
SQL文は全てストアドを使っているのですが
@INNER JOINを一杯使う
AINNER JOINを減らしてID(キー)を取得してクッキーかどっかにとりあえず置いといて10個のストアドを行うか
っていうことです。
ちなみにテーブル構成は、大元のテーブルがAとBとあり、テーブルAが親でテーブルBが子の関係となっている。
さらに、テーブルABのフィールド内部にはリレーション関係にあるテーブルが20個ほどあるのです。
イメージつきますか?
まぁ早い話が車の変動する情報と諸元といったほぼ固定の情報とメーカーなどといった情報をリンクさせて一発で
ごっそりデータを抜き取るか、1個ずつちまちまデータを抜き取るかの違いです。
どっちがいいのだろうか・・・


481 :NAME IS NULL:2005/12/06(火) 19:01:11 ID:???
>>480
外部結合や1:nやn:nの内部結合は計画的に使わないとアレですが、
コードのデコードのように1:1のものはいくつあっても平気だと思います。
この手の結合なら結合自体のサーバーへの負荷は小さく、
サーバークライアント間の通信回数を減らせるのでパフォーマンスは上がるはずです。
レコード数が少なくてほとんど変更が無くデータに鮮度が求められないものは
先読みでクライアントプログラムの連想配列にぶち込んどくのも手ですけどね。

482 :NAME IS NULL:2005/12/06(火) 19:34:24 ID:???
レコードに更新が入った時に自動的に更新時刻を更新するトリガを
書きたいのですが、プライマリキーがあれば

UPDATE table
SET updtime = getdate()
FROM inserted
WHERE table.code = inserted.code

のように書けると思うのですが、プライマリキーが指定されて
いないテーブルのレコードの特定はどのように行なえば
よいでしょうか?



483 :NAME IS NULL:2005/12/06(火) 20:10:33 ID:???
>>482
プライマリキーというかユニークなキーが全く無いテーブルじゃレコードの特定は無理

484 :478:2005/12/06(火) 20:16:20 ID:???
連想配列・・初めて聞くものだ・・・
ちょっと調べてみましたが、いまいちよく分かりません(涙
要するにクライアント(閲覧ユーザー)にメーカーならメーカーの値を先に突っ込んどいて、
ページが変わった時等は突っ込まれたメーカーの値を読み取る。
メーカーの値に限定するならば、サーバーへのやりとりは最初だけで、あとはクライアント内でのやりとりってことでしょうか?

485 :NAME IS NULL:2005/12/06(火) 20:16:40 ID:???
やはりそうですか。テーブル設計を考えます。
ありがとうございました。

486 :NAME IS NULL:2005/12/07(水) 00:00:07 ID:???
>>484
マップタイプのコレクションともいう。要は全データキャッシュしてしまえっていう使い方ですよ。
要するに・・以下はどこをどう読めばそんな結論になるんでしょうか(笑)

487 :NAME IS NULL:2005/12/07(水) 00:41:08 ID:???
>>478
>>480読んで思ったけど、
固定の情報の部分については結合された状態の情報を
前もって表示時に用いる冗長なテーブルとして用意しておいて、
表示時にはそれに変動する情報だけ結合する、
という感じにするというのがいいのではなかろうか。
固定の情報が更新されたらそのテーブルも同期させて更新する。

488 :NAME IS NULL:2005/12/07(水) 00:45:08 ID:???
>>482
AFTERトリガだとちょっと手の打ちようがないけどINSTEAD OFトリガなら
そのタイミングで日付のカラムの値を補完できないかな?

489 :NAME IS NULL:2005/12/07(水) 02:09:35 ID:???
2005 でも date 型と time 型分けられない?

490 :NAME IS NULL:2005/12/07(水) 08:01:08 ID:???
>>480
INNER JOINの代わりに副問い合わせや相関サブクエリを使うといいよ。
INNER JOINの数は減らせる。

SELECT 受注.受注No, 受注.ID, 品名.名称
FROM 受注
INNER JOIN 品名 ON 受注.ID = 品名.ID

SELECT 受注No, ID, (SELECT 名称 FROM 品名 WHERE ID = 受注.ID)
FROM 受注

>>487みたいにするならビューにした方がいいと思う。
小さいビューを複数作って、最終的に結合してもいい。

>>479
ストアドプロシージャはそのような使い方はできません。
クエリ1をビューにするか、テーブルを返すユーザー定義関数を使うといいです。


491 :NAME IS NULL:2005/12/07(水) 08:07:02 ID:???
おっと、パラメータが必要ならユーザー定義関数だな。

492 :NAME IS NULL:2005/12/07(水) 09:21:46 ID:???
>>491
ユーザー定義関数ですか。調べてみます。ありがとうございました。

493 :478:2005/12/07(水) 11:23:02 ID:???
おはようございます。複数のレスありがとうございます。
早速マップタイプコレクションでぐぐってみたら大戦略がでました。3990円だそうです。何か違う・・・
全データキャッシュですか・・マスター部分だから有といえば有かと思っています。
同期を取るというものいいなと思ってます。
ビューに関しては初めて聞くものです(涙
ストアドみたいな物みたいですが、SELECT専用と考えた方がいいのかな?
ユーザーが閲覧するトキDataGridの表示する時にも使えそうですね・・
っていうか今までストアドにSELECTかけていたのをビューにごっそり移動させればいいのかな?
一介の車屋には荷が重そうですが、がんばってみます。


494 :NAME IS NULL:2005/12/07(水) 14:14:13 ID:???
>>493
やり方はひとつじゃないうえ、ケースによって最良解は違ってくる。
記述のしやすさや、パフォーマンス、見通しのよさなど少しずつトレードオフがあったりするから
いろいろ試してみて頂戴。
結合がきれいにスター型になっているなら11個のJOINでも問題は無いと思うが、
そうなってない場合は複雑になりがち。
table型を返すユーザー定義関数は内部的に一時表を作るから使い方によってパフォーマンスが上下する。
相関サブクエリも使い方でずいぶん見易さやパフォーマンスが上下する。
連想配列の話は混乱させただけのようだからとりあえず忘れてくれ。
SQLだけですべて解決しようとしないでプログラム側で少し処理を
してやればよいケースもあることをいいたかったのだ。

495 :NAME IS NULL:2005/12/07(水) 15:24:23 ID:???
AccessからSQLServerに移行でなやんでいます
どなたかテーブルの設計のヒントを下さい><;

商品マスタに使用頻度が高いレコードと、廃止したレコードを識別するために
bit型で2のフィールドを作りました
 1.良く使用フラグ(True:良く使う(1割)/False:良く使わない(9割)) 
 2.廃止フラグ  (True:廃止(2割)/False:廃止じゃない(8割))

ほとんどの場合で「良く使用フラグ」はTrue、「廃止フラグ」はFalseで抽出します
ので、インデックスをつけようと思ったのですがBit型ではインデックスを
付けられないとエラーになりました(Accessではできたのに)

調べたらbit型では男と女を例に取って、インデックスを使用する意味が無い
から付けられないというようなことが書かれていました
確かに男と女の様に5:5の割合になるようなものはそうでしょうけど、1割
しかない場合はインデックスが有効に使えると思うのですが、そういう
ものではないのでしょうか?

仕方がないので、bit型をやめてtinyint型かchar(1)型にしようと思っています
もしこういう場合の定石みたいなものがあれば教えて下さると助かります。

496 :NAME IS NULL:2005/12/07(水) 15:27:03 ID:???
>>495
そういうものではないです。

497 :NAME IS NULL:2005/12/07(水) 17:09:06 ID:???
>>495
そのフラグだけで問合せたりすることは頻繁にあるの?

498 :478:2005/12/07(水) 17:23:06 ID:???
>>494
丁寧なレスありがとうございます。
実際分からないことだらけなので、勉強しながらジワジワと進めて生きたいと思います。
でもDropDownに値を2つ入れることが出来ればサクッと終わるのですけどね・・
IDとTEXTを入れる事ができたらなぁ・・・

499 :NAME IS NULL:2005/12/07(水) 17:46:45 ID:???
>>496-497
レスありがとうございます

このフラグでの問い合わせは頻繁にあります
この2つのフラグに加えて商品を分類する区分や商品名を部分一致
で検索したりします
商品マスタは現在は全部で5000件ぐらいです

500 :NAME IS NULL:2005/12/07(水) 18:26:45 ID:???
>>495
インデックスは、ある程度値がばらけるものにつけないと意味がない。
意味がないというのは、つまり検索の高速化に寄与しない。
一方インデックスをはると、更新の際インデックスを再構築するために
余分な時間がかかるので、必要でない限りはるべきではない。

要するに、tinyintにしようがcharにしようが、項目数がわずかのものに
インデックスをはるのは宜しくないということ。


ただ、インデックス云々とは別に、1.と2.をまとめるのはありかも。

使用頻度レベル
0 : 使用しない(論理削除状態)
1 : 使用頻度低
2 : 使用頻度高

みたいな感じで。

501 :NAME IS NULL:2005/12/07(水) 18:58:05 ID:???
Object Browserのように、
スプリクト出力時にデータも一緒に
Insert文で出力したいのですが、
どうすればいいのでしょうか?

502 :NAME IS NULL:2005/12/07(水) 19:11:58 ID:???
>>500
>ある程度値がばらけるものにつけないと
1〜2割と言う数字がその「ある程度」に当てはまるかどうかがポイントですね。
一般的には3〜5%?とか言われていますね。

>>501
標準のツールにはないけどその程度のものなら市販かネット上に転がってるような気もするな。

503 :NAME IS NULL:2005/12/07(水) 19:29:41 ID:???
>>499
商品分類区分や商品名の方が分布が広そうだから索引を作るとすると
第一キーはこの二つになるだろうし、それで十分絞り込めそうだから、
その後ろにそのフラグを第二キーとして続けるかどうかはお好みだね。
ちなみに、フラグと商品分類区分に別々の索引を作って、
フラグと商品分類区分の両方を条件で検索した場合は、
分布が広いほうが使われてもう一方は使われない。

504 :495:2005/12/07(水) 21:08:33 ID:???
皆様ありがとうございます
参考になりました


>フラグと商品分類区分の両方を条件で検索した場合は、 
>分布が広いほうが使われてもう一方は使われない

なるほどそういうものですか
Accessでは検索条件が全部インデックスになっていると
とても高速で検索できる機能(名前忘れましたが)があった
のでその感覚で考えてしまっていました

505 :NAME IS NULL:2005/12/07(水) 22:10:35 ID:???
>>504
カバリングインデックスかな?

506 :NAME IS NULL:2005/12/08(木) 00:46:48 ID:???
ビットマップインデックスという言葉を聞いたことがある

507 :NAME IS NULL:2005/12/08(木) 01:22:37 ID:???
自動カバリングインデックスはB-Treeの最終リーフを共通にするもので、
create index index1 on tableA (key1)
create index index2 on tableA (key2)
とすると
select key1 from tableA where key2 = xx
select key2 from tableA where key1 = yy
の問い合わせの高速化が図れる。
select * from tableA where key1 = xx and key2 = yy
key1+key2で索引があるわけではないのでkey1だけでB-Treeは使われでkey2は
レンジスキャンとなる。またはその逆。多少は早くなるかもしれないが
create index index3 on tableA (key1, key2)
の索引には及ばない。

508 :NAME IS NULL:2005/12/08(木) 02:06:51 ID:???
自動カバリングインデックスはMSSQL 7.0で話題になった機能で、
同時代のMS Accessにも採用されてましたが、
MSSQL2000では影も形もない。どなたか消息をご存知ですか?

509 :NAME IS NULL:2005/12/08(木) 23:25:17 ID:uwYEkJlP
ビューに関する質問の窓口はここですか?

510 :NAME IS NULL:2005/12/09(金) 00:20:44 ID:???
>>509
もちろんMicrosoft SQL Serverの範囲のことなら

511 :NAME IS NULL:2005/12/09(金) 10:07:50 ID:???
初心者名質問なんですが、
テーブル数がひとつ。ユニークキーを持つ
ユニークキーを元に検索・更新をほぼ随時繰り返す。
そのほかにユーザーのリクエストによりユニークキーを含む任意の条件で検索を行う。
レコード数は30万件ぐらい。

このような条件でメモリ使用量が250Mぐらい逝ってるんですが、これって普通なんでしょうか?
CPU負荷も結構高い・・・



512 :NAME IS NULL:2005/12/09(金) 11:22:12 ID:sKa3VoEz
ASP.NETのSQL SERVERを使っています。ビューについて質問ですが
ビューってストアド内部のみ呼び出しが加納なのでしょうか?
それ以外の部分(ASP.NET上のソース)で使いたいと思っても
ストアドを呼び出す感じに何かソースを組めば使えるのでしょうか?

513 :NAME IS NULL:2005/12/09(金) 12:05:06 ID:???
>>512
読み取り操作に関してはTableとまったく同等に扱える。
結合や関数や演算の無い単純なVIEWならば更新も可能。
VIEWはSQL Server側のオブジェクトだからどこからでも利用可能。
ちなみにSystem.Data.DataViewはSQL ServerのVIEWじゃないから間違わないように。

514 :NAME IS NULL:2005/12/09(金) 12:33:05 ID:???
>>511
多い気もするがレコード長や「随時」の頻度がわからないからなんともいえない。
「ユニークキーを含む任意の条件」というのはユニークキーを必ず含むということか、
それとも含むこともあるが含まない検索もやってるということか?

515 :511:2005/12/09(金) 14:36:58 ID:???
>>514
厳密ではないのですが、
レコード長:varchar(255)*3 DateTime*3 long*3
頻度:主にユニークキーを含む検索を秒間8-10件
です。
SQLServerはメモリあまってるときには多めに確保して、システム全体で少なくなっていった場合はそれなりのメモリ確保を行うと考えていいのでしょうか?

516 :NAME IS NULL:2005/12/09(金) 16:21:03 ID:???
EnterpriseManager でデータベースのバックアップを取る際に、
指定できるディレクトリが SQL Server の動いているPCのローカルドライブ
のみでネットワークドライブが表示されないのですが、
バックアップをネットワーク上の共有ディスクなどに取るには
どうしたらよいのでしょうか?

517 :NAME IS NULL:2005/12/10(土) 08:57:11 ID:???
>>516
\\servername\…
で直接指定できないかな

518 :516:2005/12/10(土) 10:18:34 ID:???
>>517
そんな単純な問題じゃないんだよ!>アフォ

519 :NAME IS NULL:2005/12/10(土) 10:40:20 ID:???
m9(^Д^)プギャー

520 :NAME IS NULL:2005/12/10(土) 10:48:03 ID:???
>>518
そんな単純な問題なんだが。SQLServer7だとネットーワークへは無理だけどな。
2000威光を使え。

521 :NAME IS NULL:2005/12/10(土) 14:55:56 ID:???
>>520
そうなの?
うちのSQLServer2000もEnterpriseManagerだと
ローカルドライブしか選択でないよ
そういう仕様なんだと思ってたから諦めたけど


522 :NAME IS NULL:2005/12/10(土) 15:13:29 ID:???
ウチは2000だけど、以下のようにしてネットワーク共有先にバックアップ取っている。
ご参考まで。
・サービスのMSSQLServer、SQLServerAgentのログオンを共有先に書き込めるユーザー、パスワードに変更
・バックアップ先は一覧には表示されないので "\\サーバー名\共有名\バックアップファイル名" で指定


523 :NAME IS NULL:2005/12/10(土) 23:21:29 ID:???
>>521
選択は出来ないが手で直接打ち込んだら桶。

524 :NAME IS NULL:2005/12/11(日) 01:15:24 ID:???
>>523
直前の522が正解を書いてるのにまだこういう回答をする奴がいるんだぁ。感心した。

525 :NAME IS NULL:2005/12/11(日) 08:19:43 ID:???
>>524
おいおい523だが、テメェー俺に喧嘩売ってるのか?

526 :NAME IS NULL:2005/12/12(月) 09:28:02 ID:???
>>525
にゃあ

527 :NAME IS NULL:2005/12/12(月) 10:00:07 ID:???
>>525
あたま悪そう。「メェー」って、お前はヤギか?

528 :NAME IS NULL:2005/12/12(月) 11:42:57 ID:???
>>522
御愁傷様 チーン

529 :NAME IS NULL:2005/12/12(月) 13:38:22 ID:???
>>522
>サービスのMSSQLServer、SQLServerAgentのログオン
>を共有先に書き込めるユーザー、パスワードに変更

これのせいでした
どうもありがとうございました


530 :NAME IS NULL:2005/12/12(月) 18:58:51 ID:???
AccessではUNION ALLで結合したビューを集計かけると、
テーブル表示までに60秒以上と異常に重くなってたんですけど、

例:
<view3>
SELECT 1, ID, 値 FROM view1
UNION ALL
SELECT 2, ID, 値 FROM view2

※view1・view2ともに約1万行
  view1・view2内にはサブクエリはあるがUNIONや集計関数はない

<view4>
SELECT ID, SUM(値) FROM view3 GROUP BY ID

同じビューをSQLServerで作るとテーブル表示まで3秒ぐらいになりました。
これはやっぱりSQLServerの恩恵と見ていいのでしょうか。
また、これはもっとチューニングの余地があるでしょうか?

531 :NAME IS NULL:2005/12/12(月) 19:16:39 ID:???
Access なら sum やつを union して sum するとか

532 :NAME IS NULL:2005/12/13(火) 20:04:49 ID:???
SQL Server 2000でストアドを作っています。
単純なループなのですが
fetchが何故か失敗してしまいます。
whileの前のfetchは成功するのですが、
while内部のfetchは@@FETCH_STATUSが-1となってしまいます。
テーブルのカラムの型もintで正しいと思うのですが、
原因がまったくわかりません。
どこが悪いのでしょうか

declare tmpA int

declare curManager cursor for
  SELECT A
   FROM TableA
   
open curManager
fetch curManager into @tmpA
while @@FETCH_STATUS = 0
begin
  fetch curManager into @tmpA
end
close curManager
deallocate curManager

533 :532:2005/12/13(火) 20:26:49 ID:???
@@FETCH_STATUSの値の意味を勘違いしていたようです。
すみませんでした。

534 :NAME IS NULL:2005/12/13(火) 21:45:16 ID:???
在庫管理システムをAccess+SQL Serverで開発するのですが、
何かいい本と、排他制御のテクニックを教えてください。

535 :NAME IS NULL:2005/12/13(火) 23:57:04 ID:???
Viva!楽観的ロック♪

536 :NAME IS NULL:2005/12/14(水) 00:05:00 ID:???
SNMPでカウンタ取得したいんだけどうまくいかない。
SQL serverインストールするときにsnmpサービスが入っていたらSQl serverのsnmpも有効になるってオンラインヘルプ
には書いてあるんだがダメだった。
誰かSQL serverでsnmp使っている人いる?。

537 :NAME IS NULL:2005/12/14(水) 15:53:55 ID:???
Commit するまで UPDATEした行を
他のセッションから SELECT できないんですが、、、

538 :NAME IS NULL:2005/12/14(水) 16:31:11 ID:5gWaPRnG
>>534

SQLServer2005のスナップショット分離レベルを使えば
今までの排他制御問題はなくなるのだよ。

ttp://www.microsoft.com/japan/technet/prodtechnol/sql/2005/SQL05B.mspx

539 :NAME IS NULL:2005/12/14(水) 18:31:05 ID:???
>>537
がっつり排他ロックしすぎなだけなんじゃネーノ

540 :NAME IS NULL:2005/12/14(水) 20:24:34 ID:???
オラ並な読み取り一貫性になるだっけ?

541 :NAME IS NULL:2005/12/14(水) 21:04:19 ID:???
read commited snapshot というのがOracleのそれ互換のようだが、
データベース単位の切り替えのようだからどっち使うか迷うな。

542 :NAME IS NULL:2005/12/15(木) 16:51:16 ID:Dks4wFVL
ストアドでテーブルの全レコードけしてもうた・・・orz
バックアップはとってない・・
復元する方法はありますか?

543 :NAME IS NULL:2005/12/15(木) 17:14:39 ID:???
>>542
ロールバックは?
コミットまでしちまったのならあやまるか逃げるか辞表が一番早いよ

544 :NAME IS NULL:2005/12/15(木) 17:25:16 ID:???
コミット済みだよ・・まじっすか・・・orz
。・゚・(ノД`) ワーン

545 :NAME IS NULL:2005/12/15(木) 17:37:08 ID:???
HD復旧ツール試して見れ。まず無理だけど。

546 :NAME IS NULL:2005/12/15(木) 17:46:44 ID:???
>>542
Server 2003 使ってて VSS が走ってればある時点までの復旧ができるよ。

547 :NAME IS NULL:2005/12/15(木) 22:25:09 ID:zlh9weUc
2005日本語版完成age
2/1発売なのにもう2000は旧バージョン扱いか。

548 :NAME IS NULL:2005/12/15(木) 23:07:46 ID:???
このページを見るとこんな事が書いてある。
http://www.microsoft.com/japan/presspass/detail.aspx?newsid=2531

> マイクロソフト株式会社(本社:東京都渋谷区)は、エンタープライズ データ マネジメント・分析プラットフォーム
>「Microsoft SQL Server(TM) 2005 日本語版」(以下、SQL Server 2005)、および統合開発環境「Microsoft Visual
>Studio(R) 2005 日本語版」(以下、Visual Studio 2005)の開発が12月15日(木)に完了し、2月1日(水)にボリューム
>ライセンス製品、2月3日(金)にパッケージ製品を、それぞれ発売します。

> また、両ソフトウェアの簡易版であるSQL Server 2005 Express EditionおよびVisual Studio 2005 Express Edition
>の一般向け無償ダウンロード提供も、本日より実施します。

ということでSQL Server 2005 Express Editionのダウンロードページを探しているのだがどこにも見あたらない。
どこにあるんだいったい?





549 :NAME IS NULL:2005/12/15(木) 23:24:45 ID:???
>>544
SQLServerのログからは復旧できないのか?

550 :NAME IS NULL:2005/12/15(木) 23:33:17 ID:???
>>548
Express Edition って17日からって前にアナウンスあったよね?

551 :NAME IS NULL:2005/12/15(木) 23:38:34 ID:c9PjXoaC
MSDEで十分ですよ

552 :NAME IS NULL:2005/12/16(金) 08:05:04 ID:???
>>548
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&displaylang=en
英語版ならこれ
日本語版は確かにまだ見つからないな

VS2005eの方はもう出てんのになあ

553 :NAME IS NULL:2005/12/16(金) 11:46:59 ID:???
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=220549b5-0b07-4448-8848-dcc397514b41#filelist

554 :NAME IS NULL:2005/12/16(金) 16:28:44 ID:???
>>553
わかりにくいところにあるね

555 :NAME IS NULL:2005/12/16(金) 17:06:23 ID:???
英語版のところからすぐだけど

556 :NAME IS NULL:2005/12/16(金) 17:33:03 ID:???
>>555
釣りか?
日本のSQLServerのサイトからリンクがないってことだつーの

557 :NAME IS NULL:2005/12/16(金) 19:21:48 ID:???
Win2003 Server WebEditionをMUIで日本語にして
SQLServer2000のDevelopersEditionをインストールしようとしています。
「インストール」をクリックするといきなりインストールウィンドウが
消えてアプリが終了しているようです。
このバージョンってインストール出来なかったでしょうか?
色んなキーワードでググって見ましたが事例が見つからない・・・。

558 :NAME IS NULL:2005/12/16(金) 19:27:51 ID:???
>>557
そーそー。クライアントツールはインストールできるんだけどね。
なので、Web Edition の制限じゃないかと思われ。

559 :557:2005/12/16(金) 19:33:10 ID:???
>>558
やっぱり無理なのか。勉強不足を反省。
OS変えるとか別の手段を考えてみます。

560 :NAME IS NULL:2005/12/16(金) 19:37:42 ID:???
>>559
一個言い忘れ。2005 をインストールしようとすると、この OS には対応してない、
みたいな明示的なエラーメッセージが出る。

2000 が対応してるかしてないか、俺も資料をあたったわけではないけど、↑から
そうなんだろうと推測してる

561 :NAME IS NULL:2005/12/17(土) 02:49:50 ID:???
SQL Server Management Studio Express ってまだ正式版ないのかorz

562 :NAME IS NULL:2005/12/17(土) 13:57:03 ID:???
会社でsqlserver2000を使用した開発を行っているのですが、
開発する上でなにか便利なツールはないでしょうか?フリーでもシェアソフトでもけっこうです。
皆さんが使用しているものでお勧めがあればご紹介頂けないでしょうか?
よろしくお願いいたします。



563 :NAME IS NULL:2005/12/17(土) 14:58:14 ID:???
クエリアナライザ

564 :NAME IS NULL:2005/12/17(土) 14:58:58 ID:???
>>561
正式版じゃないけど俺は普通に使えてるよ
便利便利。

しかしBooks Online 2005入れると起動しなくなる罠orz
レジストリいじらんといかんのよね

565 :NAME IS NULL:2005/12/17(土) 15:00:10 ID:???
osql.exe以外有り得ねえ

566 :NAME IS NULL:2005/12/17(土) 16:36:52 ID:???
SQL文をVBに貼り付けるときに自動的に””でくくってくれたり
逆にVBの文中のSQLから改行や””を削除してクエリアナライザ
で通るようなSQLに直してくれる便利ツールってないですか?

567 :NAME IS NULL:2005/12/17(土) 18:26:56 ID:???
>>566
ここは一つ発想を転換して、ソースからSQLを追い出す方向で考えてみては?

568 :NAME IS NULL:2005/12/17(土) 19:23:14 ID:???
>>567
ストアドってことですよね?
ソート順位とか動的SQLどうしても作ること多いのでなんとかならないかなと

569 :NAME IS NULL:2005/12/17(土) 19:35:57 ID:???
VB扱えるのなら、そんなツールすぐ作れるだろ

570 :NAME IS NULL:2005/12/17(土) 19:58:48 ID:???
>>568
O/R マッピング

571 :NAME IS NULL:2005/12/17(土) 20:38:53 ID:???
>>568
まあパフォーマンスなんかも含めてTSQLがベストでしょうね。

どうしても動的SQLが減らせないのであれば、570の言うようにO/Rマッピングがよいかも。
私はiBatisしか使ったことがないですが、SQL外出し以外にもいろいろ便利です。
ソート順であれば、ソート列や昇順降順のところだけ置換したりできます。

VB.NETならiBatis.NETが使えるのかな。素のVBなら知らない。

572 :NAME IS NULL:2005/12/17(土) 22:00:14 ID:???
>>570-571
O/R マッピング とか考えたこともなかったです
調べてチャレンジしてみたいと思います

573 :NAME IS NULL:2005/12/17(土) 22:22:39 ID:???
探したらcseってソフトがありました
これも使ってみようと思います

574 :NAME IS NULL:2005/12/19(月) 08:04:37 ID:???
>>566
VB6なら

> VBの文中のSQLから改行や””を削除して
イミディエイトウィンドウでさくっと。

ソースからSQL追い出すならData Environmentデザイナを使うといいかも。

575 :NAME IS NULL:2005/12/19(月) 11:28:34 ID:???
以前はソースからSQLを追い出す派だったんですが
人のソース(外注のソース)を現地でデバッグすることが
多くなってからは埋め込み派です。

576 :NAME IS NULL:2005/12/19(月) 12:12:46 ID:???
これ何?
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=4773BF7E-21AE-4F1E-AD48-6CA739E10217

577 :NAME IS NULL:2005/12/19(月) 12:51:41 ID:???
ttp://support.microsoft.com/default.aspx?scid=kb;ja;904660

578 :NAME IS NULL:2005/12/19(月) 18:16:35 ID:???
以下の仕様のcsvファイル
 ・文字列は「"」(ダブルクォート)で括る。
 ・文字列データ中に「"」が存在する場合は「"」でエスケープする。
をbcpで取り込む場合、どのような
ファーマットファイルを作成すれば取り込み可能ですか?

例えば、データが
abc",efg(文字列)と123(数値)がレコードデータだとすると、
csvには
"abc"",efg",123
という形式で作成されます。
このようなデータを取り込む場合の
ファーマットファイルの記述の仕方が分かる方は
ご教示ください。


579 :NAME IS NULL:2005/12/20(火) 08:23:32 ID:???
>575
俺も俺も

580 :NAME IS NULL:2005/12/20(火) 08:37:23 ID:???
>>575
今は外注でなく協力会社と呼ばなければならない
まぁ別にどーでもいいけどね

581 :NAME IS NULL:2005/12/20(火) 12:15:29 ID:QDC+WqEN
>>575

激しく同意。

VS2002だった頃はコンポーネントクラスに、
DataAdapterとかD&Dしてたけど、
後々見るとSQL文が見づらいので、やめた。

582 :NAME IS NULL:2005/12/20(火) 14:22:14 ID:???
ん、ORMを使ってそもそもSQLをほとんど書かない(Hibernate)とか、XMLファイルに
外出しする(iBatis)のが最近の流れではないのかな。

583 :NAME IS NULL:2005/12/20(火) 18:02:10 ID:???
その流れのメリットがいまいち分からないな、、

584 :582:2005/12/20(火) 19:39:23 ID:???
>>583
.NETだと、型指定データセットとかそれを取り巻くツールが充実しているから
それほどメリットがないのかもしれませんね(.NET向けORMもあるようですが)

ADOのRecordsetしかない状況で、接続→Query→Recordsetからデータ移し変え
のようなことをやることを考えると相当楽になります。

移し変えずにRecordsetをPresentationまで持っていくような場合は知らない。

585 :NAME IS NULL:2005/12/21(水) 19:20:14 ID:???
SQL Server 2005が正式発表に 名古屋銀行は早くも運用を開始
http://itpro.nikkeibp.co.jp/article/COLUMN/20051205/225705/


>SQL Server 2005が新たに用意したRead Committed with
> snapshot分離レベルでは,変更前の行の内容
>(以前にコミットされた内容)を返すようにした。

これ、まじで嬉しい、、

586 :NAME IS NULL:2005/12/22(木) 00:07:05 ID:???
Object Spaces でてたら MS 側ももっと ORM に加速するのにな
おせえよ

587 :NAME IS NULL:2005/12/22(木) 12:32:27 ID:Qu1ddMxs
>>585
読む側が、これでOracleと同じ動作になりそうだが、
更新側が心配。

588 :NAME IS NULL:2005/12/22(木) 12:49:18 ID:???
つーか更新もOracleと同じ動作

589 :NAME IS NULL:2005/12/22(木) 15:05:51 ID:???
更新側が、UPDATE した行を SELECT したら更新前の情報だったり、、
いや、試してないけどね。

590 :NAME IS NULL:2005/12/22(木) 17:29:49 ID:???
Read committed snapshotはデフォルトでOFFだから安心しろ

591 :NAME IS NULL:2005/12/22(木) 17:33:06 ID:???
UPDATE が COMMIT した後なら普通に更新後の値が返るんじゃねーの

592 :NAME IS NULL:2005/12/22(木) 17:43:58 ID:???
viewって仮想テーブルだから、
本来のテーブルを占有しちゃうはずはないんですよね…?

593 :NAME IS NULL:2005/12/22(木) 17:49:10 ID:???
>>592
占有の意味がわからん、もちっと具体的に質問してくれ。

594 :NAME IS NULL:2005/12/23(金) 13:29:21 ID:Xxh6gBa/
12/30〜12/31にSQLServer2000祭を行います。

595 :NAME IS NULL:2005/12/23(金) 17:10:06 ID:RLnfzljz
SQL server2000ですが、同時に複数の登録・更新・削除などの行為があった場合
予約みたいに順番に登録などをする事ってできるのでしょうか?
予約が無いと同時にアクセスした場合、微妙に誰かのアクセスが拒否されると思うのです。
その場合、大量のデータの場合だと激しく時間が掛かりそうなので、予約が出来ればいいなと思いました。
SQL文で行うのでしょうか?それとも、SQL server側の設定?あるいはそんなものは無い?

596 :NAME IS NULL:2005/12/23(金) 18:33:13 ID:???
>>595
http://www.atmarkit.co.jp/fnetwork/rensai/sql25/sql1.html
この連載を読んだ後 BooksOnline やら書籍やらでロックとトランザクションの勉強をしたら
疑問が氷解すると思うよ。


597 :592:2005/12/23(金) 22:44:27 ID:DYNYxD7M
会員テーブルと言うテーブルを元に作ったviewで、
検索・データダウンロードなどなど行う時、
(多分なのですが)会員テーブルを直接触る行為をすると、
タイムアウトのエラーが出るのです。

なので、ダウンロードなどの処理に時間がかかってるため、
テーブルのデータを更新しようとしても
viewで占有しているからできないのかなぁと思ったのでした。

どうでしょうか…。

598 :NAME IS NULL:2005/12/23(金) 22:47:18 ID:???
>597
VIEWだからってより、そのVIEWをどうやってどういうふうに呼んでいるかによるような希ガス

599 :NAME IS NULL:2005/12/24(土) 02:39:38 ID:MpJIFJvt
>>598
例えば?

600 :NAME IS NULL:2005/12/24(土) 04:18:16 ID:???
>>597
Viewだからでなくて、会員テーブルを直接触るという行為でトランザクションをコミットしないで長時間放置してるんじゃない?

>>594
祭りってなに、曙とか出るの?

601 :NAME IS NULL:2005/12/24(土) 11:33:41 ID:???
SQL Server 2005 って結構なスペックを要求してるけど、
2000と比べると重かったりパフォーマンスが落ちてたりするんですかね?

602 :NAME IS NULL:2005/12/24(土) 12:20:33 ID:???
>>601
MSはクエリのパフォーマンスは上がってるて云ってるし、オプティマイザも
進化してるようだから実際にパフォーマンスは上がるんじゃないの。

pubs や Northwind を使って検証してみれば?

603 :592:2005/12/24(土) 22:04:48 ID:rrL+lHHC
>>598
ASP内で、ストアドを実行させて、
viewから検索結果を返すように呼んでます。

>>600
その場合だと、常にエラーでるとかじゃなくて?

604 :NAME IS NULL:2005/12/24(土) 22:31:02 ID:???
>>603
ストアドからViewをよんでるならストアドのほうを疑ってみたりはしないのか。
索引付きViewのような特殊なのを除くとViewは普通にサブクエリを使ったのと
同じ動作になるからなにか影響が出ることはまず無いよ。

605 :592:2005/12/24(土) 22:34:29 ID:rrL+lHHC
>>604
>索引付きViewのような特殊なのを除くと

すんません、これってどういう意味でしょうか…

606 :NAME IS NULL:2005/12/24(土) 23:29:55 ID:???
>>605
http://www.microsoft.com/japan/msdn/sqlserver/sql2000/Indexedviews.asp


607 :NAME IS NULL:2005/12/25(日) 01:06:18 ID:???
レコードサイズが8kバイト以上のテーブル作りたいのですが
8kバイト以上のレコードは挿入できませんとかなんとか警告が出ます。

みなさんはこういう場合どうやっていますか? テーブルを2つに分けたり?

608 :NAME IS NULL:2005/12/25(日) 07:31:18 ID:???
>>607
可能な場合は長いVARCHARをTEXT型に変更。それでも入らなければ分割しかないね。

609 :NAME IS NULL:2005/12/25(日) 07:55:40 ID:???
>>607
レコードサイズって事は全カラムの長さの合計が8kB?
へー、それってだめなんだ…。


610 :NAME IS NULL:2005/12/25(日) 13:17:38 ID:???
Analysis Servicees mdxでゴリゴリ書きまくってるヤシいる?

ディメンションのメンバにしたくない項目を、mdxの中で値とりたいんだけど・・。
(社員マスタ内の「正社員フラグ」を見たい、みたいな・・)

Analysis初心者でスマソ

611 :NAME IS NULL:2005/12/25(日) 13:22:05 ID:???
>>604 は親切ですな。

>>605ASP内部でコミット打ってないだろ。トランザクションロックしてるんじゃない。


612 :592:2005/12/25(日) 22:25:33 ID:0W1WDINt
>>606
ありがd。

>>604
インデックスはつけてないviewでした。
て事は、ストアドの方ですかい?
んー、全部同じような書き方してるんですけど、
ここに問題があるとすれば、いっぱい修正しないといけないって事ですね…。

>>611
コミットはしてたはず…(´・ω・`)

613 :NAME IS NULL:2005/12/25(日) 23:07:08 ID:???
>>609
そうです。create table 自体はOKなんですが実際にその長さ以上の
データをinsertしようとするとエラーになります。

614 :592:2005/12/26(月) 10:48:49 ID:???
ストアドは、ストアド実行させる時に渡した引数を元に、

CREATE
    PROCEDURE ストアド(@引数)
BEGIN
    SET NOCOUNT ON
    DECLARE @strSQL varchar(8000)
    
    SET @strSQL = 'SELECT * FROM V_MASTA a'
    IF (@引数 <> "")
    BEGIN
        SET @strSQL = @strSQL + ' AND a.a_id in.....
        SET @strSQL = @strSQL + ' AND a.b_id in.....
    END

    -- 実行
    EXEC(@strSQL)
END
GO

てな感じでした。
確かに、IF内で別のテーブルやビューを呼び出していて、
複雑な感じにはなっていますが、
該当するテーブルは呼んでいませんでした。

>>611
素敵なソースサンプル、あったら教えて欲しいですm(__)m

615 :NAME IS NULL:2005/12/26(月) 12:27:58 ID:9n1dTWNk
>>588

トランザクションを開始して更新されたデータに、
別コネクションから更新かけたら、どうなんの?

616 :NAME IS NULL:2005/12/26(月) 13:13:16 ID:???
カーナビが高性能。
裏道でもなんでも知ってる。実車にも欲しい。

617 :NAME IS NULL:2005/12/26(月) 13:14:38 ID:???
あ(;゜〇゜)

618 :592:2005/12/26(月) 13:17:59 ID:1bZPeWsC
何度もごめんなさい。
>>611
テーブルを操作する方のASPでは、ちゃんとコミットしてあって、
ビューを操作する方のASPでは、トランザクションを開始してないので、
コミットもしてませんでした。

もう、何が原因なんだか…orz

619 :NAME IS NULL:2005/12/26(月) 14:26:59 ID:???
>615
コミットを待つんじゃないの?

620 :NAME IS NULL:2005/12/26(月) 16:31:33 ID:???
>>618
ストアドも問題なさそうだな。あとはsp_lockでロックの状況を調べたらどうですか。

621 :NAME IS NULL:2005/12/26(月) 17:04:23 ID:???
>>615
スナップショットREAD COMMITEDで更新を前提としない読み込みの場合は排他ロック中でも読み込めるが
更新を前提にする場合は更新ロックをかける必要があるので結局待たされる。
普通のREAD COMMITEDで更新を前提としない読み込みの場合は排他ロック中は読み込めないが、
更新ロック中なら読み込める。

622 :NAME IS NULL:2005/12/26(月) 17:46:29 ID:???
EXECじゃなくてsp_executesqlを使ってみたら?
ひょっとしたらなんかヒントになるメッセージがでているかも。

623 :NAME IS NULL:2005/12/26(月) 17:50:02 ID:???
もしも>592のやつで、
ストアド内で読んでるのがtableだったら、
問題ありなる?

624 :NAME IS NULL:2005/12/26(月) 18:03:30 ID:9n1dTWNk
>>621

> スナップショットREAD COMMITED
が前提なテーブルに対して、更新を行った場合が知りたいんです。

スナップショットREAD COMMITEDなデータに更新ロックってかけられるの?

625 :NAME IS NULL:2005/12/26(月) 18:48:59 ID:???
>>624
更新可能なものは更新ロックはかけられるよ。

READ COMMITEDというのは、
トランザクション中の更新対象(更新ロック)データについて、
他のプロセスがその対象データをSELECTした場合に
どのような値を読ませるか、の指定のことで、
トランザクション中で対象データをUPDATEしても
コミットするまでは他のプロセスは、
UPDATE前の値を読ませる指定のことだよ。

626 :NAME IS NULL:2005/12/26(月) 21:27:54 ID:???
>>597
>会員テーブルを直接触る行為をすると、
>タイムアウトのエラーが出るのです。
直接触る行為って具体的にはどんな行為?
>>600のように、トランザクションをかけて、
その中で更新をかけ、そのまま放置するような行為や、
もしくはバッチスクリプトを作成していない?

例えばisqlで実際に検証したけど、
<プロセスA>
 1> begin tran
 2> update [ユーザ] set 姓='鈴木' where [ユーザID]='00001'
 3>go
 (1 row affected)
の状態で
<プロセスB>
 1> select [ユーザID],姓 from [ユーザ] where [ユーザID] = '00001'
 2> go
という検索をかけると、プロセスBは、
プロセスAのトランザクションが完了(commit or rollback)
するまで待ちぼうけだよ。
このようなことで、タイムアウトエラーになっているのでは?

これが、>>585
2005だと、更新する前の姓が「佐藤」なら、
上記の状態のプロセスBで「佐藤」が返ってくる
モードが選べる(Oracleの NO WAIT)ということ。

ちなみに、
<プロセスA>
 1> begin tran
 2> update [ユーザ] set 姓='鈴木' where [ユーザID]='00001'
の状態なら
<プロセスB>で
 1> select [ユーザID],姓 from [ユーザ] where [ユーザID] = '00001'
 2> go

ユーザID

------------------------------
------------------------------------------------------
00001
佐藤
(1 row affected)
と返ってきて、
さらにその後、<プロセスA>で
 3>commit
 (1 row affected)
の後、<プロセスB>で
 1> select [ユーザID],姓 from [ユーザ] where [ユーザID] = '00001'
 2> go
とやると、
ユーザID

------------------------------
------------------------------------------------------
00001
鈴木
と返る

627 :NAME IS NULL:2005/12/27(火) 00:41:34 ID:???
・・・でやっぱりAnalysisを使ってる人はいないワケね・・・orz

628 :592:2005/12/27(火) 11:11:18 ID:???
>>620
了解です。

>>626
>直接触る行為って具体的にはどんな行為? 
例に出してくれたような感じのupdateをかけたり、です。

>>600のように、トランザクションをかけて、 
>その中で更新をかけ、そのまま放置するような行為や、 
>もしくはバッチスクリプトを作成していない?
トランザクション開始→更新→コミットしてる事を確認してるので、
放置って事はないはずです。

もし、例に出してくれたものの逆の場合って、
どうなるのでしょうか?

<プロセスB>開始…トランザクションは開始しない、検索実行
 ↓
<プロセスA>開始…トランザクションは開始する、テーブル更新、コミット

これで、プロセスAに影響が出たりするのでしょうか。

>>623
これ、私も知りたいです。
別のところで、問題のテーブルを検索の対象にしている部分を発見して…。
ただ、読取専用で開いてるので、
問題はないと思ってるのですが。


---
意味不明な部分も多々あるはずなのに、
たくさんの人が、すごく親切に答えてくれるので、
本当に感謝しています。
ありがとうございますm(__)m

629 :NAME IS NULL:2005/12/27(火) 11:45:23 ID:???
>>628
>>例に出してくれたような感じのupdateをかけたり
updateはストアド内の処理で?ASPで?
トランザクションはストアド内?ASP内で制御?
もしくは、クライアントAP?

>トランザクション開始→更新→コミットしてる事を確認してるので、
>放置って事はないはずです。
トランザクションの開始から完了まで、
時間がかかるような(タイムアウト時間以上の)処理をしていない?
トランザクション内でupdate処理した後、
時間のかかる検索処理をしたり、カーソル処理をかけたりした後に
commitさせたり、rollbackさせたりしてない?

>もし、例に出してくれたものの逆の場合って、
>どうなるのでしょうか?
・・・
>これで、プロセスAに影響が出たりするのでしょうか。

全然影響なし。



630 :592:2005/12/27(火) 12:00:33 ID:???
>>629

>updateはストアド内の処理で?ASPで? 
>トランザクションはストアド内?ASP内で制御? 
>もしくは、クライアントAP? 

updateは、ストアド内で行っています。
トランザクションはASP内で行っています。
 ASPでトランザクション開始
  ↓
 ASPでストアド実行
  ↓
 ストアド内でupdate
  ↓
 ASPでコミット

updateの処理は、最大30個位更新するだけなので、
そんなにたいした処理じゃないのかな…と思ってます。
処理後には、特に処理もしてないです。

あと、もしもupdateが失敗した時には、
エラー処理を行って、ロールバックさせてます。

>全然影響なし。 
そうなんですか。
了解しました。

631 :NAME IS NULL:2005/12/27(火) 13:29:47 ID:???
>>630
あとは切り分けだね。
タイムアウトしている状態で、sp_lockを調べて
本当にブロッキングかどうかチェック。

タイムアウトが再現できなく、sp_lockが使えない場合、
ユーザテーブル更新処理のコードを全て洗い出す。
>確かに、IF内で別のテーブルやビューを呼び出していて、
>複雑な感じにはなっていますが、
>該当するテーブルは呼んでいませんでした。
別のテーブルやビューも更新処理を洗い出す。

実は何かの条件で動的に生成された
SQLがとんでもない文だったり、その生成過程で時間がかかったり等かな。

632 :NAME IS NULL:2005/12/27(火) 22:00:28 ID:???
<愚痴>
SQL Server 2005入れたけどなんか勝手が違うがな(´・ω・`)
</愚痴>

633 :NAME IS NULL:2005/12/27(火) 22:33:02 ID:???
betaの頃にいれたけど、Enterprise Manager相当のものが
やたらモサモサと動いていたなあ。
.Net Frameworkなんか使うとああなるのか?

634 :NAME IS NULL:2005/12/28(水) 02:04:12 ID:???
で、誰かT-SQLに.NET構文使ってみた?

635 :592:2005/12/28(水) 11:07:07 ID:???
>>631
sp_lock使ってみました。
処理中は、該当のテーブルに共有ロックなるものがかかってましたけど、
タイムアウトのエラーが出た時では、
そのロックも消え、その他のロックもない状態。

と言う事は、ただ単に処理に時間がかかってのエラーって事ですか??

636 :NAME IS NULL:2005/12/28(水) 12:53:19 ID:???
>>634
使ってみた。
正規表現が使えたりユーザー定義型をオブジェクト指向の感覚で作れたりで便利すぎる。

637 :592:2005/12/28(水) 13:48:27 ID:???
共有ロックって、他から排他ロックかけられないんですね…。

と言う事は、
共有ロックをかけた状態で長時間処理してる内にタイムアウトエラーになって、
更新しようと排他ロック待ちのやつは待ちつづけ…の
デッドロックになってるのかなと思うのですが、
どうでしょうか?

638 :NAME IS NULL:2005/12/28(水) 14:03:06 ID:???
タイムアウトエラーになった時点で共有ロックは外れるんじゃないの

639 :592:2005/12/28(水) 15:05:20 ID:???
>>638
そうだった(^-^;

640 :NAME IS NULL:2005/12/28(水) 15:28:36 ID:???
>>637
共有ロックというのは、他のプロセスは読めるが、更新ができないロックのこと
排他ロックというのは、他のプロセスは読むことも、更新もできないロックのこと
MSSQLでは、排他ロックはコミットされていない状態の更新時、
もしくは明示的にテーブルロックをかけたときにしかできない。
(はず。オレの知識では)
そのタイムアウトエラーが起こる検索処理も
トランザクション処理で(共有)ロックをかけて検索しているの?


641 :592:2005/12/28(水) 15:46:17 ID:???
>>640
検索処理はストアドを実行させて行っているのですが、
ASPソース側でも、ストアド内でも、
トランザクションを開始していません。
が、sp_lockで見たところ、
処理中にS(共有ロック)がかかってる事がわかったので…。

て、何か変ですね。
通常ロックはトランザクションを開始しないとかからないものなのですか??

642 :NAME IS NULL:2005/12/28(水) 17:08:29 ID:???
>>641
>sp_lockで見たところ、
>処理中にS(共有ロック)がかかってる事がわかったので…。
ASP(.netじゃないとすると)で検索するときのカーソルタイプとロックタイプは?


643 :592:2005/12/28(水) 17:25:35 ID:???
>>642
カーソルは使用してない単一行SELECT文です。
ロックタイプは、共有ロックです。
(ちゃんと答えになっているでしょうか…)

ちなみに、.NETじゃないです。

644 :NAME IS NULL:2005/12/28(水) 17:57:01 ID:???
>>643
検索処理の
recordsetのCursorTypeプロパティとLockTypeだよ
LockTypeをadLockReadOnly
にしたらどう?

645 :592:2005/12/28(水) 18:20:09 ID:???
>>644
あっっ(>_<)
カーソルはadOpenStatic、
ロックタイプはadLockReadOnlyでした。

この場合、読取専用でレコードセットすると、
SELECT文にNOLOCK付けても無意味なのですか??

646 :NAME IS NULL:2005/12/29(木) 01:10:10 ID:???
VirtualPC2004を使って
Windows2000Server+SQLServer2000の仮想サーバを構築→A
Aのイメージファイルを複製しマシン名とIPだけを変えて別の仮想サーバを構築→B

AB間で分散トランザクションを使った更新を行う為、
AのSQLServerに接続して以下のクエリー実行します。
begin distributed tran
update B.Northwind.dbo.Employees set Lastname = 'A'
commit
go

このクエリーはDTCサービスを停止させるまで戻ってきません。
DTCがAとBを識別できないのか固まってしまうようです。
ちなみにAと全く別に新規インストールした仮想サーバCとの
間ではこのような現象にはなりません。

647 :NAME IS NULL:2005/12/29(木) 01:44:25 ID:???
>>645
Staticカーソルは問い合わせの結果をtempdbにいったんコピーして、その時点で共有ロックは解除される。
コピーのセットを使うのでロックタイプは常にReadOnlyになる。
NOLOCKヒントをつけるとダーティーリードした結果がtempdbに書き出されることになる。
ReadOnlyの問い合わせなら迷わずadOpenForwardOnlyにしとくが吉。

648 :NAME IS NULL:2005/12/29(木) 08:12:53 ID:???
>>646
マシン名を変えたら、ストアドを流して SQL Server 側も変更しないと駄目じゃなかったかな


649 :NAME IS NULL:2005/12/30(金) 04:49:08 ID:g54YFBWt
2005と2000て共存できるの?

650 :NAME IS NULL:2005/12/30(金) 09:08:38 ID:???
>>647
そうです。B側に以下spを実行してsysserversを修正しました。
これで分散クエリーによる相互参照ができるようになりました。
use master
sp_dropserver A
go
sp_addserver B,local
go
ただこれだけだと分散トランザクションは固まります。
まだ何か足りていないようです。

651 :NAME IS NULL:2006/01/04(水) 14:27:41 ID:??? ?
2005のexpress入れてみたけど、管理ツールらしき
「management studio CTP」ってのが起動してくれない
誰か教えてクレ

652 :592:2006/01/04(水) 16:07:16 ID:3e9k/hg1
あけましておめでとうございます。

>>647
NOLOCKはよろしくないのですね…
READ UNCOMMITEDも同じ様なものらしく、ロックのオプションをつける事はやめました。

---
ここまでみなさんに色々教えていただいたのですが、
諸々が動かないのは、
おそらくロックが問題ではなく、データの量が多すぎの為
処理が被ると負荷が大きくなりすぎるためと考える事にしました。

そこで、表示の処理を変えようと思ったのですが、
テーブルのn件目〜m件目までを読み込み表示と言う事は、
ASP(VBScript)+SQLServerでどうやって行っているのでしょうか?
.NETやオラクルであれば色々あるようなのですが…。

ちなみに現在は、ストアドでデータを全件取得し、
ASPソースのループでページ移動ごとにn件目〜m件目とやってます。


653 :NAME IS NULL:2006/01/04(水) 22:25:20 ID:???
>>651
Books Onlineもインスコすると起動しなくなっちゃうんだよね。

REGEDITで↓を消すと直るぞ
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQLServer\90\Tools\Shell]

詳細は↓
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=127698&SiteID=1&PageID=0

654 :NAME IS NULL:2006/01/04(水) 22:37:07 ID:???
>>651
同じ現象になった。
.NET2.0からSQLまで全部入れなおしたら動いた。
今はVSPro,SQLSErverただで手に入れて使ってる。



655 :NAME IS NULL:2006/01/04(水) 22:57:08 ID:???
>>652
無理やりの例。

select top 10 * from #tst A where COND1=1 and not exists
(select * from
(select top 20 * from #tst where COND1=1 order by KEY1) B where A.KEY1=B.KEY1
) order by KEY1

ちなみにこれは21〜30番目が取得できる。

whereが多くなっていくとクエリはやばい事になっていくがな…。

656 :651:2006/01/05(木) 12:41:20 ID:??? ?
>>653-654
回答ありがとう!]

>If this key does exist, SSMSE probably thinks you have the full SSMS on your machine.
なるほどー

657 :NAME IS NULL:2006/01/05(木) 16:21:44 ID:t1WkfdLF
サーバーとクライアントのバージョンアップで
サーバー   :OS windowsNT server → windows2003server
    SQL SQL SERVER6.5 → SQLSERVER2000
クライアント :OS windows98,NT → windows2000,XP
に変更になりましたがクライアントからサーバーにあるEXEを実行したときに
SQLSERVERへの接続がwindows2000のクライアントだけ失敗します。
windowsXPのクライアントは接続に成功してPGが実行できます。
サーバーのクライアント権限は全てadministratorで設定しています。
10台のPC中3台ある2000クライアントだけこの現象が出ます。
旧環境では何の問題もありません。
どのような原因が考えられますでしょうか?
よろしく御願いします。

658 :NAME IS NULL:2006/01/05(木) 17:55:32 ID:???
>>657
MDAC

659 :652:2006/01/06(金) 10:21:34 ID:jVGwiITm
>>655
こんな感じにしてみました。
SELECT TOP 50 * FROM [TBL] WHERE [id] NOT IN
 (SELECT TOP 10001 [ID] FROM [TBL])

ただ、検索結果から指定行から指定件数抜き出すとなると、
やっぱりWHEREがとんでもない事に…。

あー。
どうしたらいいんだろう。

これでも、全件取ってきてASPでガリガリよりは
処理が早いのかな…

660 :NAME IS NULL:2006/01/06(金) 14:04:48 ID:E0qDLfVT
いや、だからね。最初の表示の時だけ、表示するデータのすべての
キーを取ってきてだね、ページ変わったら、クライアントでどのキーの
データを表示するか求めて、そのキーだけデータベースからとってくればいいの。
キーというのはね、レコードを一意に識別する列ね。

661 :NAME IS NULL:2006/01/06(金) 14:11:44 ID:E0qDLfVT
って、処理が早いか遅いかは実際にSQLServerに大量にデータ突っ込んで、
、SQL発行してみれば、いいと思うの。


662 :NAME IS NULL:2006/01/06(金) 17:21:27 ID:???
>>660
セッションにキーセットを全部持っとくのか。多ユーザーでデータが多いときはメモリがしんどくないかい。

663 :NAME IS NULL:2006/01/06(金) 18:42:46 ID:E0qDLfVT
>>662
その通りだし、どの方式を採用した方がいいかは要件次第でしょ。
サーバーのスペックや検索結果の平均レコード数はだいたいとれくらいになるか、平均同時接続数はどれくらいになるのか、
それらの情報がないと、どの方式がベストだか、俺にはなんとも言えない。
すべて、トレードオフなんだから。
だから、ただ、こういう方法をあると言いたかっただけ。


664 :NAME IS NULL:2006/01/06(金) 20:56:45 ID:???
じゃ、一時テーブルとidentity使う方法も候補に。
メモリとかtempdbは食うけど、速いコトは速い。
これもトレードオフ。

665 :NAME IS NULL:2006/01/06(金) 21:37:21 ID:???
>>659
inは結果セットが発生するから重いよ
existsの方が速いらしい

666 :NAME IS NULL:2006/01/06(金) 23:46:56 ID:E0qDLfVT
664>
そうだね、一時テーブルとかもいいよね。俺が言った方法も一時テーブルの方法も
結局は質問主が初めやってた、CursorType=Staticと同じことなんだけどね。
つか、そもそも、何故、初めのやり方でうまくいかないのか気になるんだけど。
ストアドでタイムアウトおきてんのか、検索処理でおきてんのか気になる。
ちゃんと切り分けてないような気がするんだけど、原因を。

665>
俺もそうだね、in使うときはなるべくexists使うようにしてる、更に言うならば、
existsよりも、外部結合使った方が安全だと思う。



667 :657:2006/01/07(土) 13:58:00 ID:nVZECw+o
社内で取引先と同じ環境でテストしていたのですが
その時は2000でも大丈夫でした。
MDACのバージョンは
クライアント:2.6
サーバー:2.8
です。

668 :NAME IS NULL:2006/01/07(土) 16:53:14 ID:???
認証は問題ないの?
WINDOWS統合なのかSQL認証なのか、その辺
ワークグループだったのがADにしたとか



669 :NAME IS NULL:2006/01/07(土) 19:43:14 ID:???
認証、接続方法(名前付パイプ、TCP/IP)、名前解決、クライアントライブラリのバージョン、
アンチウィルス(パーソナルファイヤウォール系)などなど、原因はいろいろ考えられる。

ひとつひとつつぶしていくのが王道。

670 :NAME IS NULL:2006/01/07(土) 20:36:19 ID:???
開発案件数
15年ほど前
Oracle>>>>>>>DB2>>Sybase>その他

最近
Oracle>>>>>Postgres>>SQL Server>>>DB2>My SQL>その他

671 :NAME IS NULL:2006/01/08(日) 15:17:52 ID:???
>>670
MyとPosgreはそんなかんじだっけ?俺の周りじゃPosgreよりMyが多いのだが。
ここよりもMySQLスレに書いたほうがかまってもらえると思うよ。

672 :NAME IS NULL:2006/01/08(日) 21:33:19 ID:bfMMbkwp
初歩的な質問ですがビューを使った場合、ストアドの中でビューを使うのと
ビューと同じSELECT文をストアドに入れて使うのとでは処理スピードに違い
はあるのでしょうか?
それともう1点
掲示板はほとんどがperlで作ってあるようですが、SQL SERVERで掲示板
やブログを作った場合では総合的にどちらがいいのでしょうか?
掲示板の利用基準は1日の書き込みが20件前後として

673 :NAME IS NULL:2006/01/08(日) 21:38:23 ID:???
>>672
おそらく有意な差はないだろう。

1日20件程度、しかも掲示板やら blog なら、SQL Server を使うメリットはないな。

674 :NAME IS NULL:2006/01/08(日) 21:38:58 ID:N4LkNB8/
>初歩的な質問ですがビューを使った場合、ストアドの中でビューを使うのと
>ビューと同じSELECT文をストアドに入れて使うのとでは処理スピードに違い
>はあるのでしょうか?
これは、そこまで、処理に差がでないと思うので、作りやすい・メンテナンスしやすい
方でいいと思います。

>掲示板はほとんどがperlで作ってあるようですが、SQL SERVERで掲示板
>やブログを作った場合では総合的にどちらがいいのでしょうか?
>掲示板の利用基準は1日の書き込みが20件前後として
うーん。perlとSQL Serverじゃ、言語とデータベースの比較で、
どっちがいいとはなんともいえません。




675 :NAME IS NULL:2006/01/08(日) 22:46:39 ID:bfMMbkwp
早速の返事ありがとうございます。
ストアドに関しては今まで気になりながら作っていたので今後は安心して作れそうです。
掲示板の方はperlの言語など知らないので慣れたSQL SERVERで作ろうと思います。
既出と思うけどちょっと頭にある掲示板のイメージを具体化してみたいと思います。
ありがとうございました

676 :NAME IS NULL:2006/01/09(月) 10:35:20 ID:???
>>652
いまさらですが、ここが参考になります。
ttp://blogs.sqlpassj.org/matu_tak/archive/2004/05/18/2337.aspx

677 :NAME IS NULL:2006/01/10(火) 15:52:34 ID:mKE/QCSN
質問です。
見当違いのこといってるかも知れませんが、
次のような場合でSELECTでなくDELETEする方法を教えてください。
SELECT * FROM hoge1 LEFT OUTER JOIN hoge2 ON hoge1.a = hoge2.a WHERE hoge2.b=0

678 :677:2006/01/10(火) 16:22:48 ID:???
ス、スミマセン。。。自己解決しました。
INというのでできるのですね。

679 :NAME IS NULL:2006/01/10(火) 16:47:28 ID:???
>>677
標準SQLではINなどでサブクエリを使うが、MSSQLの拡張構文では下のようにも書ける。
主キーが複合キーの場合は拡張構文を使うと便利。
ほかにもUPDATEにFROM句が書けたりする。
DELETE hoge1 FROM hoge1 LEFT OUTER JOIN hoge2 ON hoge1.a = hoge2.a WHERE hoge2.b=0


680 :677:2006/01/10(火) 18:43:58 ID:???
>>679
ありがとうございます!
大変参考になります。

681 :NAME IS NULL:2006/01/10(火) 21:35:00 ID:pq8f6Pn/
質問です
ピューで2つのテーブルを結合し、その結果をストアドでwhereした場合
の処理速度ってどうなんでしょうか?
というのも、ビューで2つのテーブルを表示している段階ではキーが存在
していますがストアドでビューを呼び出したときにはキーは無いようなので
その分処理速度が落ちるのかなと思った次第です。


682 :NAME IS NULL:2006/01/11(水) 10:06:15 ID:???
>>681
select .. from table1 join table2 on (...) からなるview1 があったとして
select .. from view1 where table2.x = 999 の問い合わせは
select .. from table1 join table2 on (...) where table2.x = 999 に展開されてからプランニングされる。

683 :681:2006/01/11(水) 12:57:22 ID:???
イメージしてたのと全然違った方法で処理されていたのですね
そういう風に処理されているなら全然心配しなくてもいいですね!
ありがとうございました

684 :NAME IS NULL:2006/01/11(水) 16:34:08 ID:???
IUSRに権限与えるとやばいですか?


685 :NAME IS NULL:2006/01/11(水) 23:27:04 ID:/GC5gfzz
質問させてください。
ドメインのユーザーグループ毎にDBのアクセス権限を変えたいです。
Windowsのファイルやフォルダのアクセス権はユーザーをグローバルグループに入れて
ローカルグループにグローバルグループを入れて、ローカルグループに
アクセス権を与えるというのが推奨されてると思います。
DBの場合はさらにSQLのグループにローカルグループを入れるべきか、
まぁそこまでやらなくてもローカルグループに直接権限を与えてもいいのか。
そのあたりの指針みたいなもんってないですか?


686 :NAME IS NULL:2006/01/12(木) 19:21:56 ID:???
テーブル内のYYYY/MM/DD形式で入っているカラムのデータを、
実行日の年月で動的に取り出したいと考えています

select * from xxx
where
substring(s_date,1,7) = '2006/01'
※s_dateは、'YYYY/MM/DD'形式でvarchar(10)です

こんな事をやりたいのですが、月の'01'〜'09'がうまく取れません
SQL内で、gatedate()、year()、month、str()の関数を使って以下のように
書いているのですが、

select * from xxx
where
substring(sdate,1,7) = STR(year(getdate()),4) + '/'+ STR(month(getdate()),2)

STR(month(getdate()),2)
この部分が、1月〜9月の場合には数値の前にスペースが入って' 1'〜' 9'となってしまいます。
うまくスペースを0に変換したいのですが、C言語のsprintfみたいな関数は
ないでしょうか?


687 :686:2006/01/12(木) 20:22:38 ID:???
>>686
即事故レス

文字列ではなく、datetime型に揃えてみました。
一応SQLサーバ側でうまく変換しれくれることは確認しましたが、遅そう…
select * from xxx
where
convert(datetime,(substring(s_date,1,7)+'/01')) = convert(datetime,STR(year(getdate()),4) + '/'+ STR(month(getdate()),2)+'/01')

688 :NAME IS NULL:2006/01/12(木) 20:41:28 ID:???
>686

s_date between 当月の初日 and 当月の末尾

となるよう考えたほうがよくね?
参考:
ttp://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/04/01/1512.aspx
ttp://blogs.sqlpassj.org/yoshihirokawabata/archive/2004/04/01/1513.aspx

689 :NAME IS NULL:2006/01/12(木) 23:48:18 ID:???
こんな方法もあるということで。

convert(char(7), getdate(), 111)

690 :686:2006/01/13(金) 10:31:33 ID:???
>>688,689
アドバイスありがとうございます。

条件にbetweeenは思いつきませんでした。ヒットするレコードが6億件中の1億件程度と
ちょっと大きいので、substring()で年月を比較する方法とどっちが効率的か、
計測してみたいと思います。

>>689
ムダにdatetime型に変換しなくとも、月を2ケタで取りたい時はこれで一撃ですね。
ありがとうございます(__)

SQLは半ばやらされでイヤイヤでしたが、おもしろくなってきました。
ありがとうございました。

691 :NAME IS NULL:2006/01/13(金) 16:46:24 ID:???
>>690
>ヒットするレコードが6億件中の1億件程度
月単位とか出テーブルを分けた方がよさそうな予感もする。

692 :NAME IS NULL:2006/01/13(金) 17:49:00 ID:???
>>690
一般論としては検索フィールドに関数を使うのは避けたほうがいい。
その日付フィールドに索引があるなら範囲で問い合わせないと索引を使ってくれない。
ただヒットが全体の1/6なら全件総なめでもさほど差はないかもしれない。


693 :686:2006/01/13(金) 18:30:13 ID:???
>>691
月単位でテーブル分割も考えたのですが、アプリの改修もあるため
なかなか手が出せませんでした。

月で分割する前に6億件が7種類の業務データに分けられるのですが、
1つだけ、カーディナリティーが突出しているものがあり(8割以上占めている)、
これを別DBに分けることにしています。
加えて、ほとんどアクセスのない前月以前のレコードはこれまた別DB(ヒストリ)に
逃がします。
そのため、いままで6ヶ月分6億件あったレコードのうち、5億件がほとんど
アクセスされないヒストリに、主対象の1億件も8,000万件と2,000万件に分かれます。
これで、大幅に軽くなるのではないかと予想しています。

>>692
>一般論としては検索フィールドに関数を使うのは避けたほうがいい。
過去レスでカキコを見つけました。詳しくはこれから調べてみます。
索引は下のレスで。

>>688
データを引き抜こうとしたテーブルはクラスタ化インデックスがあるのですが、
(もちろん、日付フィールドも対象です)
substring()とbetweenの両方の実行計画を確認したところ、
Clustered Index ScanがClustered Index Seekとなり、速くなることが
わかりました。
実際にはどのくらい速くなるのかは、商用機にさわれる時にチェックしてみます。

皆様どうもありがとうございます。

694 :NAME IS NULL:2006/01/14(土) 17:42:35 ID:oOx/pn3s
SQL Server2000です。
Datetime型のフィールドを更新したのですが、うまくいきません。
2005年1月14日をいれるにはどうすればよろしいでしょうか?
Update r_event
Set ew_date = 2005-01-14


695 :NAME IS NULL:2006/01/14(土) 17:44:57 ID:???
それでは2005マイナス1マイナス14がセットされる。
日付の表現方法を学んでください。

696 :NAME IS NULL:2006/01/14(土) 17:46:37 ID:???
>>694

'2005-01-14'

697 :NAME IS NULL:2006/01/14(土) 18:31:46 ID:oOx/pn3s
>>695 >>696
ありがとうございます。
無事、Updateできました。

698 :NAME IS NULL:2006/01/14(土) 20:25:43 ID:???
【帰ってきた】SQL質疑応答スレ
http://pc8.2ch.net/test/read.cgi/db/1124178925/638

こっちにもフォロー入れとけよ?

699 :NAME IS NULL:2006/01/14(土) 23:59:44 ID:???
質問。
management Studioを使って、SQL Server 認証のためのログインアカウントを作成すると、
勝手にパスワードが書き換えられるのはなぜ?

700 :NAME IS NULL:2006/01/15(日) 19:21:26 ID:???
>>699
書き換えられる、と思った理由は?
内部で保存されてるパスワードが読める訳は無いよね。

「そのアカウントでログイン出来ない」とかだったら
ログイン自体が不許可になっている、という可能性があるのでは。

701 :NAME IS NULL:2006/01/17(火) 15:35:34 ID:???
>>694
もう気づいてると思うが今2006年な。

702 :NAME IS NULL:2006/01/17(火) 16:49:51 ID:???
SQL Server2005のバックアップで教えて下さい。

>>260のAの様にサービスを止めてから、.mdfと.ldfファイルをコピーするだけで
バックアップ可能なのでしょうか。
それとも仕様がかわり、Enterprise Managerからしかできないのでしょうか。

703 :NAME IS NULL:2006/01/17(火) 16:53:45 ID:???
>>610
遅レスだけど、無理じゃね?
ディメンションのメンバに存在するからこそMDXで操作できるんだと思うけど。


704 :NAME IS NULL:2006/01/17(火) 16:54:39 ID:???
>>702
2005もmdfとldfのコピーでバックアップできるよ。

705 :NAME IS NULL:2006/01/17(火) 16:59:06 ID:???
>>702
ここの [バックアップ・リカバリ] リンクで落ちてくるdocを読んどくと気が楽になる
http://www.microsoft.com/japan/technet/prodtechnol/sql/2005/exercises.mspx

706 :702:2006/01/18(水) 13:46:19 ID:???
>>704,705
本当にありがとうごさいました。助かりました。
このスレでは無理ですが、私もあなた方の様に回答のわかるものは
気持ちよく書こうと思います。



707 :NAME IS NULL:2006/01/18(水) 18:33:42 ID:???
Express Managerの英語版でも、日本語扱うのに問題はないですか?
もちろんフィールド名などに日本語を使うわけじゃなく、データとして日本語を扱う場合です。
MSのダウンロードセンターを検索しても日本語版は見つからないんですが、まだ日本語版は
出てませんよね。

708 :NAME IS NULL:2006/01/18(水) 19:51:09 ID:???
>>707
問題なし

709 :NAME IS NULL:2006/01/18(水) 20:09:55 ID:???
>>708
情報thx、ぼちぼちインストールしてみます


710 :NAME IS NULL:2006/01/19(木) 16:58:44 ID:???
データベース名を列挙するにはどうしたらいいですか?

711 :NAME IS NULL:2006/01/19(木) 17:24:57 ID:???
sp_databases

712 :NAME IS NULL:2006/01/19(木) 17:42:55 ID:???
できた!
そのストアドを探してみたのに見つけられずにいた漏れって・・・orz

713 :RDB初心者:2006/01/20(金) 09:21:05 ID:5hUPH1fH
テーブルを全件更新する場合って
カーソルで回すのとアップデート
どっちが速い?

714 :NAME IS NULL:2006/01/20(金) 10:38:14 ID:???
>>713
釣られますがアップデート

715 :NAME IS NULL:2006/01/23(月) 16:59:39 ID:???
SELECT 命令で、全レコード中 x件目からy件のデータを取得、
のような SQL はどのように書けばよいでしょうか?

MySQL には limit 構文で書けるのですが MSSQL はどのように
書けばいいのかわからなくて…。

よろしくお願いします。

716 :NAME IS NULL:2006/01/23(月) 17:30:20 ID:???
>>715
最初からn件なら SELECT TOP n ...
m件目からはないのでプログラムで読み飛ばすか、自己結合やnot existsでTPOに合わせて要工夫。
ありがちな質問だから過去スレを見れば出てくると思う。

717 :NAME IS NULL:2006/01/23(月) 20:00:11 ID:???
>716
過去スレどころか、このスレにあるから、順番に読んでってくださいw
FAQ級だな、これ

718 :NAME IS NULL:2006/01/24(火) 22:22:18 ID:???
別のスレから誘導されたのですが、
今年になってから、データベース(SQL鯖2000)を触り始めたのですが、 

1 クエリとビュー 
2 ユーザ定義関数とストアド 
の違いって何でしょう? 
特にUDFとストアドのl使い分けがよく分からないので
教えてください。

719 :NAME IS NULL:2006/01/24(火) 23:28:40 ID:???
>>718
クエリはSELECT文による問い合わせ一般。
VIEWはSELECT文による問い合わせをマクロ化した仮想的なテーブル。
MS-ACCESSではVIEWをクエリと呼んだりしているので要注意。

UDFはストアドファンクションと呼んだりするからストアドプロシージャと基本的な構造は同じであるが、
戻り値がある。普通はselect文と組み合わせて使う。
select ユーザー関数(a), b, c from xxx
このためUDFの中でデータを更新することは禁止されていたと思う。

720 :NAME IS NULL:2006/01/24(火) 23:45:36 ID:fC/+3Ayi
>>719

レスThx

今は、テーブル構成などを把握する意味もかねて、
ユーザ向けのadpやらmdbを、いじってるから違いがよく分からなかったのよ。

あとUDFは、ローカルなtable変数には、更新追加削除OKみたいだが
現時点ではよく分からないや;;


721 :NAME IS NULL:2006/01/25(水) 00:08:59 ID:???
クエリ:
 DBアクセスを行うための問い合わせ言語。
ビュー:
 Selectクエリによって定義される仮想テーブル。
 定義によってはビューに対してのinsertやupdateも可能。
 引数は無い。
 俺は正規形を崩したりするのに使う事が多いかな。
ストアド:
 一連のクエリによる処理を前もって登録しておくもの。
 クエリのコンパイルのコストが減らせる。
 結果セットを返すようにすればビューに近いものになるし、
 また複数のINSERTやUPDATEをストアドにまとめてしまえば
 トランザクションを意識しなくてすむ。
 引数がある。
 俺は主に後者の利点を生かし、更新系で使う。
 結果セットを返すためのストアドはユーザ定義関数に取って代わる。
ユーザ定義関数:
 スカラ値を返すものと、テーブルを返すものの二つに分けられる。
 スカラ値を返すユーザ定義関数は、普通のクエリ内の関数と同様。
 IDを引数で渡すと該当する人の氏名を返す、というような関数を定義したり出来る。
 テーブル値を返すユーザ定義関数は、ビューや結果セットを返すストアトに似ているが
 複数のクエリ文を使えたり、引数を取れるという点でビューとは違い、
 またFromに書いてサブクエリとして使えるという点でストアドとは異なる。
 ビューも安直で利点はあるが、
 引数を渡す事で必要となる結果セットを抽出しやすくなる場合は非常に有用。

722 :NAME IS NULL:2006/01/25(水) 21:35:58 ID:???
SQL Server の、データファイル *.mdf の存在する場所ですが、
レジストリに

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLDataRoot

とあり、ここに入っている値 + Data でいいのかな、と思うのですが、
この Data のディレクトリが環境によって変わる事はありますか?

*.mdf の存在パスは上記 SQLDataRoot + "Data" で 100% OK でしょうか?

723 :NAME IS NULL:2006/01/25(水) 22:29:43 ID:???
>>722
デフォルトで作られるところはそうだけど指定すればどこにでも作れる。

724 :NAME IS NULL:2006/01/25(水) 22:34:32 ID:???
>722
何をしたいが分からんが、つ[sysdatabases]

そもそも、mdfファイルやldfファイルの配置なんて、データベース作成時に
何処にでも配置できるから。

725 :NAME IS NULL:2006/01/25(水) 23:32:20 ID:???
テーブルサイズの見積り方法って、WEBで公開されてますか?

726 :NAME IS NULL:2006/01/26(木) 00:17:30 ID:???
>725


727 :NAME IS NULL:2006/01/26(木) 00:20:09 ID:???
ミスった・・・orz

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/hlpview/hlpview_94fm.asp
 ここら辺のどこかにあると思うので。

728 :NAME IS NULL:2006/01/26(木) 03:45:22 ID:???
計算の方法は一応あるのだが最後はvarcharなどの可変長フィールドの平均利用率を
どうするかで数字がごろごろ変わってきて、最後のほうはドンと倍さらに倍といった
見積もりになってしまうな。
だいたい見積もり段階で使ったテーブル設計図どおりで本番を迎えることはまずないし。

729 :NAME IS NULL:2006/01/27(金) 13:45:07 ID:pHI3C2gZ
T-SQLでIF文のネストに限界はありますか?
END付近に正しくない構文がありますというエラーになってしまいます。

WHILE @@FETCH_STATUS = 0
BEGIN
WHILE @a <= @b
BEGIN
IF @c = 2
BEGIN
IF @d = 0
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
IF @e = 0
BEGIN
IF @f > 0
BEGIN
IF @g > 0
BEGIN
IF @h > 0
BEGIN

IF @i = 1
BEGIN
PRINT 'test1'
END
//ここはネストしていない
IF @j = 1
BEGIN
PRINT 'test2'
END        <-----ここでエラーになっている


730 :NAME IS NULL:2006/01/27(金) 13:59:13 ID:???
すいません自己レスです。
IF @j = 1
BEGIN
PRINT 'test2'
END  
の部分で)を付け忘れてる部分がありました。
  

731 :NAME IS NULL:2006/01/27(金) 15:11:00 ID:???
>>715
yukonの
分析関数

732 :NAME IS NULL:2006/01/27(金) 16:47:26 ID:aoQ1VSnV
mdfファイルやldfファイルの配置場所はどこで確認出来ますか?


733 :NAME IS NULL:2006/01/27(金) 17:13:31 ID:???
sp_helpdb

734 :NAME IS NULL:2006/01/28(土) 13:06:03 ID:???
>>715
きたないT-SQLで悪いんだけど、ヒントになるかね?
昔PASSJかどっかのBBSに載ってたコードを漏れが改悪。
[@一度に取り出す行数] と [@現在の頁番号] の値を変更すると動いたりする。

USE pubs

DECLARE @全行数 INTEGER
DECLARE @一度に取り出す行数 INTEGER
DECLARE @現在の頁番号 INTEGER
DECLARE @副問合用の件数 INTEGER
DECLARE @SQL文 NVARCHAR(150)

SET @一度に取り出す行数 = 5
SET @現在の頁番号 = 0

SELECT @全行数 = COUNT(title_id) FROM titles

SET @副問合用の件数 = @全行数 - @現在の頁番号 * @一度に取り出す行数

SET @SQL文 = N'SELECT TOP ' + CAST(@一度に取り出す行数 AS NVARCHAR(2))
+ N' * FROM ( SELECT TOP ' + CAST(@副問合用の件数 AS NVARCHAR(2))
+ N' * FROM titles ORDER BY title_id DESC ) tmp ORDER BY tmp.title_id'

EXECUTE (@SQL文)

735 :NAME IS NULL:2006/01/28(土) 14:58:23 ID:mU+IUxfv
>>715
M番目までの集合からN-1番目までの集合を引く

ORACLESQLパズルにMSでも動くSQLがあるだろ

736 :NAME IS NULL:2006/01/31(火) 01:07:11 ID:???
すみません T-SQLで動的SQLとカーソルを一緒に使用することって可能でしょうか?
具体的にはストアドの引数としてテーブル名を取得し、そのテーブルからデータを取り出して
1行ずつ処理していきたいのですが

DECLARE cur_Cursor CURSOR
FOR
SELECT hoge FROM @vcTable

という風にテーブル名に変数を使用すると、クエリアナライザで「@vcTableを宣言してください」
といったようなエラーが出てしまいまして。

すみませんがご存知の方いらっしゃいましたらよろしくお願いします。

737 :NAME IS NULL:2006/01/31(火) 01:29:27 ID:???
テーブル名に範囲があるなら、ソースが長くなってもケース分けした方が高パフォーマンス
カーソル処理は統一だから、似たようなスキーマっぽいし、コピペの力技で作れるのではないかと思ってみたり。

動的でもできないことはないんじゃないかと。わかんないけど。とりあえず、
@vcTableでエラーが出るのは動的になってないからじゃない?
Declare 〜 FROMは文字列になるだろうからその最後は + @vcTable でくつけなければいけないんじゃないかなー。

738 :NAME IS NULL:2006/01/31(火) 01:32:15 ID:???
>>736
カーソル処理を動的に書くより、同名のViewにはじめにマップさせてしまうのはダメですかね?
突発的に思いついたんだけど。動的に書く部分はCreateViewと、DropViewで。
もし、やってできたら教えて欲しいです。

739 :NAME IS NULL:2006/01/31(火) 11:57:45 ID:???
すいません、XMLファイルをテーブルに格納したいのですが、
なかなかサンプルが見つかりません。
(XML型はSQL Server Management Studio上では読み取り専用列になっています。)
クライアントはVB.NETでDOMに移して処理するつもりですが
保存と読み込みの部分が不明な状態です。
情報等ご存知の方がいれば教えてもらえないでしょうか。

740 :NAME IS NULL:2006/01/31(火) 13:18:54 ID:???
>>739
SQL2005ならBOOKS Onlineに載ってる。
Expressには付いてこないがMSからBOOKS Online日本語版をダウンロードできる。

要素の切り出しをDOMでやるなら文字列の読み書きとまったく同じだけどな。
特定の要素や属性で検索や読み出しをするならXQuery式が必要になる。

741 :NAME IS NULL:2006/01/31(火) 13:47:52 ID:???
すれ違いかもしれませんが、見つからないので、とりあえずここで質問させていただきます。
適切なスレがありましたら、誘導をお願いします。

ストアドで、直接テキスト出力はどのようにやればいいのでしょうか?
PL/SQL(Oracle)で「UTL_FILE」を利用して行うような形で、何かありますか?

※ SQL Server 2000 です

742 :739:2006/01/31(火) 13:55:26 ID:???
>>740
早速ありがとうございました。カンファレンスかなんかでもらったβ版だったので
BOOKSOnlineからダウンロードしてみます。

>要素の切り出しをDOMでやるなら文字列の読み書きとまったく同じだけどな。

今から調べますが、ということはXMLというより普通に[varchar](max)型のカラムに
文字列を入れるだけということでしょうか。
とりあえずXmlDocument.LoadXmlで読んでみたいと思います。
XMLが初めてだったのでてっきり新しくできたXML型のカラムに文書を保存するもの
と思ってしまいました。操作自体はクライアントのVBでツリービューで行うので問題
ないと思います。

743 :NAME IS NULL:2006/01/31(火) 20:39:17 ID:+IwFG76F
SQL2Kでディスク分散するときの質問です。
ディスクが2枚または4枚のとき「ユーザデータ」「インデックス」「トランログ」「tempdb」は
どのように分散させるべきですか?
また、ディスクをパーティションで区切った場合と区切らない場合で効果は変わりますか?

744 :NAME IS NULL:2006/01/31(火) 20:48:03 ID:???
>>741
bcp

>>743
ユーザーデータとインデックスはよくわからんが、ログは別ディスク、tempdb
はメモリ上に置け。

パーティションに区切るだけじゃほとんど意味なし。外周上に配置される方は、
多少早くなるかもしれんけど。

745 :NAME IS NULL:2006/01/31(火) 21:12:08 ID:???
>>744
tempdbをメモリに乗せられるんですか?勉強になりました。
ただそのときメモリに障害が発生したらDBが止まりませんか?
そうなると多分却下されそうです…。

746 :NAME IS NULL:2006/01/31(火) 21:16:47 ID:???
>>745
ごめんごめん。2000 では、tempdb in RAM オプションないみたい。古いバージョンでは
よく使った手法なんだけどね。

747 :NAME IS NULL:2006/01/31(火) 21:24:46 ID:???
「ユーザデータ」と「インデックス」は別ディスクの置くと効果があった。Oracle7での経験だけど。

748 :741:2006/01/31(火) 21:36:46 ID:???
>>744
レス、ありがとうございます。

が、
ストアド内で、カーソルをループさせ、
1レコードずつ条件分岐や項目編集を行って
1レコードずつ出力したかったんです。
(ワークテーブルは作りたくないので)

でもって、一応、自己解決しました。
SP_OA系のコマンド使ってできたっぽいです。
が、とりあえずテキスト出力はできたけど、合ってんのかなぁ…

749 :NAME IS NULL:2006/01/31(火) 21:39:09 ID:???
>>748
sp_OA 系はどうしようもないときだけにしといた方がいいよ。つか、何でワークテーブル
嫌なんさ? # つけて一時テーブルにしちゃえばいいじゃん。

750 :736:2006/02/01(水) 00:10:32 ID:???
レスありがとうございます
>>737さんの言うとおり、DECLARE 〜 FROM までを文字列にして、 + @vcTableで
テーブル名を連結させたらうまくいきました 具体的には下のような感じです。

EXECUTE (' DECLARE Cs_Type1 CURSOR '
+ ' FOR '
+ ' SELECT '
+ ' わはー '
+ ' FROM '
+ @vcTable)

--Cursorオープン
OPEN Cs_Type1
FETCH NEXT FROM Cs_Type1 INTO 〜

>>738さんの教えてくださった方法は、まだ試せてないです(自分の能力不足のため)
申し訳ない。
機会があったら試してみます。

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

751 :NAME IS NULL:2006/02/01(水) 08:48:40 ID:???
>>743
4枚だったら「ユーザデータ」「インデックス」「トランログ」「tempdb」をそれぞれに分散させるべき。
2枚だったら「ユーザデータ」で1枚、「インデックス」「トランログ」「tempdb」でもう1枚かな。
本当は「トランログ」と「tempdb」は分けたほうが良いけど。

752 :NAME IS NULL:2006/02/01(水) 11:56:55 ID:???
>>751
MSSQLの場合、索引とデータの分離をとるかクラスタードインデックスをとるか悩むことがあります。
まず安全性のことを考えると最低でもトランザクションログだけは別の物理ディスクにするべきでしょうね。
この間メーカーがディスク全部をひとつのRAIDディスクにしてその中をパーティションに分けて帰りやがった・・・(泣

SQL2005でsnapshot分離を使うと、tempdbをoracleでいうところのrollback(redo) segment代わりに
するようなので今後はここも熱くなりそうです。

753 :NAME IS NULL:2006/02/01(水) 12:03:41 ID:???
ちょっと修正 redo -> undo

754 :NAME IS NULL:2006/02/01(水) 17:29:32 ID:KIHlpnN3
select XXX FROM tbl1
と取得する時に、
他にテーブルを作って参照させることはさせず、
XXXの値が1だったらA XXXの値が1だったらB
とSELECTで取得したいのですが、ORACLEのDECOD関数のような、
条件で値を切り替える方法は、
どうすればいいでしょうか?

IF関数を調べましたが、ダメでした


755 :NAME IS NULL:2006/02/01(水) 17:54:39 ID:???
CASE

756 :NAME IS NULL:2006/02/01(水) 17:57:38 ID:KIHlpnN3
>>755
できました m(__)m

757 :NAME IS NULL:2006/02/01(水) 18:19:15 ID:???
オラクルで
@ファイルパス
でファイルの中のSQLを実行する。というような事ができたと思うんですが、
SQLServerで同じような事ができますか?

758 :NAME IS NULL:2006/02/01(水) 18:35:14 ID:???
>>757
コマンドラインで指定するなら -i <filename>
対話モードではisql と osql にはなかったと思う。sqlcmdは :r <filename>。


759 :NAME IS NULL:2006/02/01(水) 18:37:37 ID:???
ACCESS(2003)からSQLserverへの移行で、アップサイジングウィザードではアップサイジングできないんですか?
また何が問題になるのでしょうか?
経験された方教えて下さい。

760 :NAME IS NULL:2006/02/01(水) 21:31:36 ID:???
結局オラクルと違ってディスクIOの分散まで必要な
大規模システム組んでる奴はここにはいないのか…。

761 :NAME IS NULL:2006/02/01(水) 22:21:43 ID:UyW/wIxu
別スレから来ました。
asp.netとSQL_serverを使っています。
Select文でちょっとお聞きします。
テーブルに「あいう」「かきく」「たちつ」「なにぬ」というデータがあり、Likeを使い
「き」と「なに」を取り出したいのです。
Yahooなどの検索をテーブル内でしたいのですが、うまくいきません
SELECT hoge AS [@item]
FROM hage
WHERE (oge LIKE @name)
というストアドで、「@name」の部分はどんな書式にすればいいのでしょうか?

「@name」を「'%き%') AND (oge LIKE '%なに%'」と書き換えればデータは取れるのですが
ASP側で検索する際には「あ」だけかもしれないし、「い」「つ」「き」の3種類になるかもし
れないので、@nameにぶち込む書式を教えてください。
文盲スマソ


762 :NAME IS NULL:2006/02/01(水) 23:49:17 ID:???
>761 最大いくつか決まってる?
例えば、最大5個って決まってんなら、

SELECT *
FROM hoge h
WHERE EXISTS
(SELECT * FROM
(SELECT ? HOGE
UNION
 SELECT ? HOGE
UNION
 SELECT ? HOGE
UNION
 SELECT ? HOGE
UNION
 SELECT ? HOGE) HOGE_TBL WHERE h.oge LIKE '%'+HOGE+'%')

ってSQL作ってやってあとはADO.NETで値を放り込んでやればよい。

763 :NAME IS NULL:2006/02/01(水) 23:55:18 ID:???
>>760
エンタープライズ系のネタを2ちゃんで拾おうってのが間違いじゃ?

>>761
動的クエリーを使ってね。

764 :NAME IS NULL:2006/02/02(木) 00:27:42 ID:l446bGbp
学校の授業で「100万件データがあるテーブルにアクセスして、
クエリなげるプログラム作って、レスポンスタイムを短くするように
チューニングしろ」って課題がでたんだが、普通はどれくらいの時間
かかるんかな?
ADO.NETでSQL Server2000に接続します。テーブルの列は2,3列くらい。

765 :NAME IS NULL:2006/02/02(木) 00:37:26 ID:???
どんなクエリかによる。
インデックスつかって、1レコード特定するようなものならほぼ一瞬じゃない?

766 :764:2006/02/02(木) 01:44:52 ID:l446bGbp
>>765
そのクエリの内容を今考えていまつ。
ただどんなクエリを投げれば良いパフォーマンスが得られるのかが
よくわからず(今必死で情報集めようとしているが)
クエリの内容とインデックスくらいかな。パフォーマンスに関係あるのは。

767 :NAME IS NULL:2006/02/02(木) 08:05:35 ID:???
>>766 ほれ。

SELECT TOP 1 FIELD1 FROM TABLE1

768 :NAME IS NULL:2006/02/02(木) 10:07:34 ID:???
ディスク分散はパーティションテーブルとか業務的な理由もあるからそう単純じゃないよね

769 :NAME IS NULL:2006/02/02(木) 11:58:19 ID:???
>>768
HDD障害の対処、バックアップとの兼ね合いとかもあるし。4枚しかディスクがなくて、
それぞれ分散、なんてHDD障害のことを考えたらありえないでしょ。

770 :NAME IS NULL:2006/02/02(木) 13:02:59 ID:???
>>769
大元の質問が負荷分散の効果を聞いているのに
その回答はあげ足を取っているだけでは?


771 :NAME IS NULL:2006/02/02(木) 13:08:19 ID:???
バックアップ&ディスク障害のリカバリはセカンダリの役目だろ?

772 :NAME IS NULL:2006/02/02(木) 14:47:06 ID:JUKIKgIw
あのー
31日の夜あたりからなんですが、SQLのログにLoginFailのイベントがやたら記録されているんです。
sa, admin, rootといったアカウント名でログインを試みてる奴なんですがなんかこういうウィルスとかありましたっけ?

773 :NAME IS NULL:2006/02/02(木) 15:07:39 ID:???
すまん、俺だ

774 :NAME IS NULL:2006/02/02(木) 17:05:59 ID:???
>>761
パラメータの数にあわせて動的にSQLを作るか、パラメータの数だけ複数ストアドを準備する。
where oge LINK '%き%' or oge LIKE '%なに%'

フルテキスト索引をつかうならそのまま指定可能。
where FREETEXT(oge, 'き なに')
ただしフルテキスト索引の特性をよく顧客に説明しておかないと、
LIKEを使ったときと結果が違うバグだバグだと大騒ぎされるので要注意。

>>772
確かあったよね。SQL2000のSP3か4で対処したやつ。saパスなしだと一発でやられる。

775 :NAME IS NULL:2006/02/02(木) 17:15:11 ID:???
Slammerだっけ?

776 :NAME IS NULL:2006/02/02(木) 20:03:59 ID:???
>>771
質問主でもないし、その辺詳しくないから答えられないけど
お前みたいな人の粗捜ししかしないで、書いていない事まで妄想して
文句だけはしたり顔で言うくせに情報は出さない奴が嫌いなので
ディスクがすべてRAID01で検索メインのDBの場合でお前の回答を聞かせてもらおうか。

777 :761:2006/02/02(木) 22:39:25 ID:???
>>762>>763
レスありがとうございました。
今日1日初耳の動的クエリや>>762を弄っていましたが私のスキルでは
今日中には出来ませんでした。
もう少し勉強してきます。

>>774
今レス見たのでまだですが、早速明日試して見たいと思います。
特性というのは攻撃に対する脆弱性があり感じですので、一度その辺りも
調べて見たいと思います。

またお世話になるかもしれませんが、ありがとうございました

778 :NAME IS NULL:2006/02/03(金) 21:12:09 ID:???
spt_server_infoテーブルのCOLLATION_SEQの値は
インストール時のCOLLATIONの指定によると思いますが、
インストール後にこれを変更することは可能でしょうか?

もちろん直接テーブルを更新すれば変わることは変わりますが、
そんなことをしてよいのかどうかが分からず・・・


779 :MAME IS NULL:2006/02/05(日) 20:36:46 ID:q9bTn3UE

ところで2005はいいのか?

780 :NAME IS NULL:2006/02/05(日) 20:50:02 ID:???
なんか色々微妙

781 :NAME IS NULL:2006/02/06(月) 01:37:20 ID:L/b68Q3o
>>775
スラマーはport1434の脆弱性をつく奴だろ
そのちょっと後に出てきた奴だと思うが俺も名前が出てこない

782 :NAME IS NULL:2006/02/06(月) 13:14:01 ID:???
MSSQL2kですが、行レベルロックとか明示的に指定できないのですか?
MSのサイト見ても、なんだか曖昧な説明でモヤモヤ。

783 :NAME IS NULL:2006/02/06(月) 19:03:06 ID:???
>>782
テーブル ヒント

784 :782:2006/02/07(火) 16:58:14 ID:???
>>783
ありがとう。withでやれば良いのですね。

行レベルロック等の方言?の違いなどもあり、
なかなか検索で巧く引っかかってませんでした。

785 :NAME IS NULL:2006/02/08(水) 00:10:59 ID:???
ロックの単位なんかはクエリオプティマイザに任せた方がいいと思うけどなあ

786 :NAME IS NULL:2006/02/08(水) 03:45:07 ID:pPuRpQKx
PHPのmssql関数って、SQL Server 2005利用できるのかな?


787 :NAME IS NULL:2006/02/08(水) 04:58:47 ID:???
>>785
カーソルでしかselect for update の構文が使えないから
with (updlock) と with (holdlock) は使ってる。
粒度ヒントなどはシステム任せでまず使わないね。
>>782 がいってる行ロックうんぬんもselect for updateの書き方が
わからないといったレベルの話じゃないかな。

788 :NAME IS NULL:2006/02/08(水) 07:16:00 ID:???
>>785
はぁ?

789 :782:2006/02/08(水) 11:03:43 ID:???
ご推察通りです。>>787

Access2000(DAO)+SQL2kにて、行レベルロックと、IsolationLevelの SERIALIZABLE を
有効にしようと躍起になっているのですが、未だにうまく行きません。

オブジェクトがサポートしていないというメッセージが表示されて凹む訳ですが、
どうにかならないですかね…。orz



790 :NAME IS NULL:2006/02/08(水) 12:12:36 ID:???
>>789
ADOじゃなくてDAOですかい。リンクテーブルやOdbcDirectを使ってるわけですか?

791 :NAME IS NULL:2006/02/08(水) 13:56:25 ID:???
785じゃないですが、明示的に行ロックを使うのってどういう場面があるのでしょうか。

792 :NAME IS NULL:2006/02/08(水) 15:56:22 ID:???
>>791
ロックのエスカレーションを抑制したいとき。
通常は行レベルで、エスカレーションが発生するのは1命令の1テーブルに対する
行ロックが5000を超えた場合とSQLサーバー全体でメモリが圧迫した場合なので、
あえてデフォルトを代えて抑制する必要はない。
TABLOCKやPAGLOCKを指定することはあってもROWLOCKを使うことはないな。


793 :NAME IS NULL:2006/02/08(水) 17:32:32 ID:???
TABLOCKかあ。

タイムアウトやデッドロックが多発するというシステムの保守を押し付けられて
中を見てみたらデータ追加の部分が
「アプリケーションロジック内で主キー最大値を取得し、
1を足したものを主キーとして新しいレコードをINSERT」となっていて…
「同時追加時に主キーがかぶってエラーになるのでロックをかける」
というコメントとともに片っ端からTABLOCKXが追加されていた…orz

というガックリな経験を思い出しちまったよ。

794 :NAME IS NULL:2006/02/08(水) 21:51:42 ID:???
>>793
IDENTITYを使えといいたいところですが、ID+1でやるならこんな感じでしょうか。
begin transaction
declare @nextid integer
select @nextid = max(id)+1 from tableA with (holdlock, updlock)
insert into tableA .. values (@nextid, ...
commit work

もっと簡単な方法もありそうですが正しいかどうかはわかりません。
つまり1命令中のアトミック性は維持されるかどうか何ですけど、どうなんでしょう?
insert into tableA (id, ... ) select max(id)+1, ?, ?, ?, ? from tableA

795 :NAME IS NULL:2006/02/09(木) 01:01:00 ID:???
ACCESS 2002 の 2005 対応パッチでないんだろうな
つかえねえ

796 :MSDE:2006/02/09(木) 23:56:28 ID:vOTBqaGk
学校現場で働いている者ですが、教育センターで開発された成績等を管理するシステムを導入しようとしています。
学校のファイルサーバにMSDEを稼動させて本システムのサーバ機能をインストールに成功しました。
次に
各先生方のノートパソコン20台ほどに本システムのクライアント機能をインストールしたら、無事にサーバへアクセスして、本システムが活用できるところまで来ました
しかし、あるXPHomeEdition一台だけクライアント機能をインストールするときに、
DB接続失敗
MSDEが稼動していない

とメッセージが出てインストールできません

797 :NAME IS NULL:2006/02/10(金) 00:26:13 ID:???
(´・∀・`)ヘー

798 :NAME IS NULL:2006/02/10(金) 01:47:47 ID:???
>>796
XP SP2のFireWallもどきが通信止めてたりして

799 :MSDE:2006/02/10(金) 07:15:06 ID:0u8eiuOM
XP SP2 ではなかったです。
まだアップデートしていないようです

機種はLavieのLL550/3です
ファイルサーバへのpingは通るし、共有フォルダにも問題なくアクセスできているので、やっぱり原因はクライアント側にインストールできない何かがあると考えていますが、何かまたわかりましたら、教えてください

800 :NAME IS NULL:2006/02/10(金) 07:16:30 ID:???
>>799
なんだその態度?なんか調査しろって言ってんのか?

801 :NAME IS NULL:2006/02/10(金) 07:59:01 ID:???
>>800
>>799は別に期限切って回答迫ってるわけでもないし
気が付いたことがあったらアドバイスよろって言ってるだけじゃん
普通に言葉のキャッチボールもできないのかよ…

802 :NAME IS NULL:2006/02/10(金) 09:55:45 ID:???
クライアントネットワークユーティリティのAliasタブに変なものがあるとか?

803 :NAME IS NULL:2006/02/10(金) 10:53:32 ID:???
教育センターに頭下げて教えを請え。アホ。

804 :NAME IS NULL:2006/02/10(金) 12:17:58 ID:pV3dJIe/
>>796
MDAC ふぁ?

805 :NAME IS NULL:2006/02/10(金) 19:45:05 ID:???
>>796
>DB接続失敗
>MSDEが稼動していない

もうちょっと正しく書いてみろ。

806 :NAME IS NULL:2006/02/10(金) 20:42:05 ID:???
クライアントプログラムの出してるメッセージだしょ。

807 :NAME IS NULL:2006/02/10(金) 22:24:43 ID:???
>>801
アホすぎるし必死すぎる・・・
相当痛いコだな。

808 :NAME IS NULL:2006/02/10(金) 22:29:44 ID:???
>>807
おまえも仲間だよ。



809 :NAME IS NULL:2006/02/11(土) 10:43:25 ID:FfMUfefw
質問です。
asp.net+Sqlserver2000でWEBサイトを作ろうとしています。
Sqlserverは高額なので開発はDeveloperで行い
開設の際には対応したレンタル鯖を借りようと思います。
これだけでWEBサイトは開設できますか?
何から何まで初めてなので、なんか間違ったこと言ってたら
指摘お願いします。

810 :NAME IS NULL:2006/02/11(土) 12:16:58 ID:???
>>809
できます。

811 :NAME IS NULL:2006/02/11(土) 12:22:13 ID:???
>>809
基本的には問題ないけど、asp.net対応SQLレンタルさば高いよ
Sqlserverが高いといっているような、クライアントでは維持できないんじゃない?



812 :NAME IS NULL:2006/02/11(土) 12:28:36 ID:???
キャンペーン自体は終了してるけど、リンク先に載ってる業者は安いよ。
http://enterprise.watch.impress.co.jp/cda/software/2005/10/25/6458.html

>>811
Developer版で開発して商用版で運用するのって普通じゃねーの?

813 :811:2006/02/11(土) 13:51:16 ID:???
>>812
普通だと思うよ。それかMSDNかパートナー用のパッケージ使うでしょう。
ただなんとなく、>>809はSQLサーバー+ASP.NETのレンタル鯖が月額1000円もしないと思ってるような感じがしたので

あとリンク先の業者は、SQL鯖は自由にいじり倒せないやつだし、容量を増やせば金額もかかる。月額525円ではcalの代金にもならない。
開発環境をそのまま運用できるようにするには、それなりのサーバー借りないとだめだね

814 :NAME IS NULL:2006/02/11(土) 15:52:03 ID:???
>813
 CALに関しては、プロセッサライセンスが1CPU辺り60〜70万円なので、
償却期間を3年とすれば、1CPUのサーバーだと月2万円弱の費用ですね。
 レンタル業者の提供する環境に合わせればOKかとは思うが、借りれる
サーバーの能力が未知数なのが怖いな。
 障害対策の水準とかも考える必要があるな。
 インターネットで公開すると言うことは、セキュリティ対策を考えて
アプリケーションの仕様を決め、コーディングも注意が必要な訳だが。
 何もかも初めてだと、かなり荷が重いのではないかと思う。

815 :809:2006/02/11(土) 16:51:04 ID:FfMUfefw
みなさまありがとうございます。

鯖については>>812様のリンク先にあるcervi.jpにしようかと考えていたのですが
>SQL鯖は自由にいじり倒せないやつだし
という意見を考えると悩んでしまいます。
ですがデータベースとwebに関してはド素人なので最初はそれでいいかなと。
サイトが軌道に乗って、容量もキツくなってきたら考えますが。
セキュリティ対策は要勉強ですね。がんがります。

816 :NAME IS NULL:2006/02/12(日) 02:01:18 ID:???
誰か、Windows Installer 3.1をアップロードしてください。

817 :NAME IS NULL:2006/02/12(日) 03:53:20 ID:???
test
hearts;

818 :NAME IS NULL:2006/02/12(日) 09:05:28 ID:???
>>816
割れ厨?

819 :NAME IS NULL:2006/02/12(日) 10:20:21 ID:???
CLR ストアドなかなか使えるね。


820 :NAME IS NULL:2006/02/12(日) 12:10:48 ID:???
>>819
どんな感じ?詳しく

821 :NAME IS NULL:2006/02/12(日) 12:18:02 ID:???
配列データをストアドに渡して、処理させるのに便利。
その気になればDataTableやDataSetも渡せるので、サーバとのラウンドトリップの
やり取りが減らせる。
ただデータサイズが大きくなるので注意が必要だが。

822 :NAME IS NULL:2006/02/12(日) 17:08:33 ID:???
CLR ストアドってどうやってコード・配置・テストしてる?
俺はストアドはテキストエディタ、osql、Accessでやってたけど。
VisualStudioでも使ってるの?

823 :NAME IS NULL:2006/02/12(日) 17:39:38 ID:???
CLRストアドってVSのPro以上じゃないと開発できないの?
これの為だけにProにするのはなぁ...


824 :NAME IS NULL:2006/02/12(日) 17:44:14 ID:???
SQL Server 2005ってADOからでもアクセスできるのかな?
Active Server Pagesから繋ぐ必要が出てくるかもしれないんだけど、
ASP.NETでの利用方法しか聞いたことないから・・・


825 :NAME IS NULL:2006/02/12(日) 19:09:47 ID:???
>>824
ここから Microsoft SQL Server Native Client を落としてインスコ。そんでASPから利用。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=D09C1D60-A13C-4479-9B91-9E8B9D835CDC

前のバージョンまで MDAC て呼んでたコンポーネント群が2005から Native Client に改称された。
たぶん。だったと思う。

826 :NAME IS NULL:2006/02/12(日) 22:42:13 ID:???
>>825
d。
とりあえずダウンロードしてみるよ。


827 :254:2006/02/14(火) 14:29:42 ID:NeHMpNgS
質問です。
Windows 2003 ServerでSQL Server 2000を動かしているのですが、
ODBCで接続することが出来ません。
Windows ファイアウォールを無効にして、
Enterprise Managerでは接続できるようになりました。
なんとかODBCでもつなぎたいのですが、
どの辺に問題があるのでしょうか?

お願いします。



828 :NAME IS NULL:2006/02/14(火) 17:59:32 ID:???
なにを、どうして、どうなったから、接続に問題があると言っている?

829 :NAME IS NULL:2006/02/14(火) 18:55:23 ID:???
>>827
Windows Server 2003 から ODBCで接続出来ないの?
それとも例えば Windows 95 や 98 から接続出来ないの?
後者なら MDAC のバージョンが原因だと思う。

830 :NAME IS NULL:2006/02/14(火) 21:21:05 ID:???
2005のディベロッパーエディションを買ってきた。
x86,x64,IA64毎に2枚ずつあるCDROMの文字が激しく読みにくい。
使わないから関係ないがな。

831 :NAME IS NULL:2006/02/15(水) 00:14:59 ID:???
>>828
お前には関係ない。

832 :NAME IS NULL:2006/02/15(水) 00:21:36 ID:???
俺にはわからないよ
お前がなぜ

833 :NAME IS NULL:2006/02/15(水) 00:49:40 ID:???
>>827
回答:SQL Server 2000はWindows 2000 Serverで使え

834 :833:2006/02/15(水) 00:52:31 ID:???
使ってくださいの間違いでした。

835 :NAME IS NULL:2006/02/15(水) 22:21:58 ID:???
>>827
サーバ側にODBCの設定をしていないというオチを予想

836 :NAME IS NULL:2006/02/16(木) 09:39:56 ID:???
MS SQLはそんなのいるのか・・・

837 :NAME IS NULL:2006/02/16(木) 09:56:17 ID:???
いらないよ

838 :NAME IS NULL:2006/02/16(木) 16:38:28 ID:03omxfBV
主語をかけろ

839 :NAME IS NULL:2006/02/16(木) 17:22:42 ID:???
U2

840 :NAME IS NULL:2006/02/16(木) 17:23:44 ID:???
かけりません

841 :NAME IS NULL:2006/02/16(木) 22:47:04 ID:2m4d7TVX
中国・アジア系女性の画像掲示板作りますた。(・∀・)
見に来てください

hhttp://g2003.immex.jp/cyons/

842 :NAME IS NULL:2006/02/17(金) 23:07:02 ID:xNsmpwUw
 2台のサーバ A, B に MSDE2000 を入れて、 Access2003 ランタイム版をバンドリングした
ADP ファイルで接続するようなシステムを作ろうと考えています。
 データ件数はマスタが30k件、50 のクライアントから一時間あたり30回程度の SELECT と UPDATE、
その子テーブル(対応履歴)への 30回程度の INSERT が発生する見積もりです。

 現地に詳しい管理者を置けないため、サーバ障害時になるべく手間をかけずにもう一台を
使って業務を再開できるようにしたいのです。具体的には障害発生から30分程度で業務再開、
手戻りも障害発生から30分以内を目標にしています。
 SQL Srv. が使えれば即時更新トランザクションレプリケーションを使うことで ADP の接続先
変更だけで簡単に実現できそうなのですが、予算の都合で無料で使える MSDE2000 しか
使えません。
 スナップショットは高コスト且つレプリケート中はロックがかかるそうなので30分間隔で走らせる
のは怖いし、マージは競合の解決が必要とのことなので避けています。
 そこで、以下のようにすればよさげだと考えているのですが、甘いでしょうか。

1)サーバA で毎晩フル, 日中は 10-30分に一度差分バックアップを サーバB の共有フォルダに取得
 (差分バックアップの容量/取得時間次第で、DIFF->LOG->LOG なども検討する)
2)サーバB は、サーバAのフルバックアップ取得後にそれを norecovery でリストアする。

3)サーバA に障害が発生したら、現地の管理者にサーバAのトランザクションログを取得する
 バッチファイルを実行させる。
4)サーバB に最新の差分バックアップを適用するバッチファイルを実行させる。
5)サーバB にトランザクションログを適用して recovery するバッチファイルを実行させる。
 ※ログを取れなかった場合は recovery だけするバッチファイルを実行させる。
6)サーバB の 2) のジョブを停止するバッチファイルを実行させる。
7)クライアントにサーバBへ接続する ADP を配布し、サーバBを使わせる(業務再開)

 トランザクションログが取得できない壊れ方をしても、最大で差分取得の間隔までの手戻りで済む
と踏んでいます。
 業務が再開した後で、こちらの管理者を向かわせて原状復帰します。

 MS-Access は何度も使っていたのですが、MSDE を使うのは初めてなのでこのような
方法でよいのかどうか迷っています。是非とも、ご助言下さい。

843 :NAME IS NULL:2006/02/17(金) 23:41:59 ID:???
>>842
外からは同じ型のテーブル群がそのデータベース内に存在するように見えるからといって、
そのデータファイルやバックアップ、トランザクションログを複数のサーバで同じように
使える事が保証されているわけじゃないよ

そこがMSDEやSQL Serverと、AccessのMDBファイルとは決定的に異なる部分

844 :NAME IS NULL:2006/02/18(土) 03:31:40 ID:???
>>842
それだけの仕掛けをバグなしで作成してトラブルなく運用できる自信があるなら止めないが、
1日1回のフルバックアップと数回のログバックアップだけで十分な気がする。
SQL-Serverのライセンスも払えない客はまる1日待たせとけばいいよ。
リモートディスクトップか類似のソフトであんたが遠隔操作したほうが確かじゃないかい。

むしろ気になるのはMSDEのEULA。最新のは調べてないが、以前調べたときは
Server系OSにインストールした場合に10クライアント程度だった。

845 :NAME IS NULL:2006/02/18(土) 08:54:25 ID:???
>>842
Dev版買ってずっとテストをユーザーにやってもらえば?


846 :NAME IS NULL:2006/02/18(土) 09:48:47 ID:???
>>845
そ・れ・だ・!

847 :NAME IS NULL:2006/02/18(土) 13:59:13 ID:???
>>842
差分バックアップは別に要らないような気が。
定期的にトランザクションログをバックアップして
常にサーバーBに食わせておけばすぐ切り替えられるでしょ。

848 :NAME IS NULL:2006/02/18(土) 14:04:10 ID:???
>>842
( ・∀)人(∀・ )通報しますた!

849 :NAME IS NULL:2006/02/18(土) 18:39:02 ID:???
MSDEはライセンスフリーで、そのまま商用利用も可能ですよね?(OSのライセンスさえあれば)
それで、DBにはMSDEを利用し、管理はエンタープライズマネージャー使うのはライセンス的に問題あるでしょうか?

まず本物のSQLServerを購入します。
こちらは社内で使うとして、ライセンスも購入します。
そこにEMがついてきますよね。

で、それとは別件でMSDEのDBを構築します。
ライセンスは、そこにアクセスするクライアントで決まるので
MSDEの場合それがフリーですから、ライセンスは発生しないはずですよね。
という事は、別件でライセンスを使用して使っているEMで
このMSDEにアクセスしても問題はありませんよね?

ようは最初の1個目さえ正規ライセンス品を買えば
後はDBの容量や制限さえ気にしなければ
MSDEを使って、しかもEMからアクセスしても問題ないかどうかと言うことです。

DBはEMにライセンスが必要なのではなく、
DB自体にアクセスするのにライセンスが必要という解釈で間違っていないですかね?


850 :NAME IS NULL:2006/02/18(土) 19:13:58 ID:???
>>849
MSDEがライセンスフリーなんつってるんじゃぁMSDEのEULAは理解できてなさそうだな。

他のマシンからMSDEにアクセスさせる事自体、MSDEのライセンス違反。
MSDEであっても一応SQL Serverなので、Enterprise MangerでもSQLクエリアナライザでも
アクセスすれば接続できるが、その開発者用の接続ができるからといって、その使い方での
運用まで桶というわけではない。

で、SQL Serverのライセンスについても理解できてんのかどうか非常に心許ないのだが、
Enterprise Managerに関してだけは、その解釈で間違っていない。

851 :NAME IS NULL:2006/02/18(土) 19:40:57 ID:???
>>850
> 他のマシンからMSDEにアクセスさせる事自体、MSDEのライセンス違反。

そうなの?

http://www.microsoft.com/japan/sql/msde/howtobuy/msdeuse.mspx

> Q. MSDE を Web アプリケーションのデータベースとして使用できますか ?
> A. はい。同時接続ユーザー数が 25 以下の基本的な Web アプリケーションに
> とっては、MSDE は理想的なソリューションです。

ってあるけど・・・

#確かに、Access などに基づく MSDE については、Access をインストールしたデバイスのみ、
 って書かれてけどね

エンタープライズマネージャの利用については、

> Q. SQL Server のツールおよびサービスと、MSDE の併用は可能ですか ?
> A. SQL Server のツールおよびサービスと、MSDE を併用できるのは、
> SQL Server 2000 (Developer Edition、Standard Edition、Enterprise Edition のいずれか)
> から MSDE を入手した場合、およびライセンスが適切に許諾された SQL Server 2000
> のコピーと MSDE を併用する場合に限られます。

だね。


852 :842:2006/02/18(土) 19:45:52 ID:???
>843
 成る程、同じインスタンスに違う DB 名で RESTORE したら大丈夫だったので安心していました。
とりあえず開発環境に2つ目のインスタンスを導入して、本当に実現可能かちゃんと試してみます。
>844 >847
 確かに、ログバックアップを逐次食わせていけば大丈夫ですね…頭に血がのぼっていたようです。
ちなみに導入先は社内です。ただ、別拠点且つ外部接続されないネットワークなので、自分で
常時管理することができません。
 EULA は JPN_MSDE2000A.exe に含まれる license.txt, ReadmeMSDE2000A.htm をあまさず
読みなおしてみましたが、クライアントのアクセス数の制約については記載されていないようでした。
>845,846,848
( ´Д` )えー
>849 >850
 MSDE を再頒布して使用するのは SQL Srv.2k Dev. で、Access2003 RT版は VSTO で可能です。
本番環境は EM を使わないで利用できるよう、DB のセットアップは開発の時点からすべて T-SQL を
組んで行っています。
 しかし、EM はよいツールですね。Dev. が入る前は osql だけでいじっていましたが、BOL にかじり
つかなくてもたいていの操作は行えるわ DB セットアップ用の SQL は自動生成するわ。重宝しています。

853 :NAME IS NULL:2006/02/18(土) 19:51:51 ID:???
Workstation系の場合は他のマシンからは禁止だった記憶があります。
Server系の場合は10接続位だったと思うけど、WEBの場合は多いのかもね。
Workstation系でIISを動かす場合はIIS側にもライセンス上の制限があるはず。
Workstation系でのMSDEはスタンドアロンとSQLServerからのレプリケーションで
使う用途を想定していて、SQLServerに対する接続は接続数に含まなくてよかったはず。

EULA探してるんだけど、インストールしないと出てこないだっけ?

854 :NAME IS NULL:2006/02/18(土) 20:25:42 ID:???
マイクロソフトがどういう利用を想定してMSDEのライセンスを設定したのかというのが
よく分からん。ADOなVBアプリ等のデータ格納先としての、Accessよりかはもちっとマシな
ローカルでスタンドアローンなDB利用を想定、なのかな?

>>851
> http://www.microsoft.com/japan/sql/msde/howtobuy/msdeuse.mspx
以前その文面を見た時、それは一体どういうものを意味しているのかを調べたんだが、
結局それは「IISと同一のサーバにMSDEをインストールし、そのIIS上でそのMSDEに
接続するようなWebアプリを動作させる」場合は、IISの同時接続ユーザが25以下の状態が
パフォーマンス的に妥当、という意味にすぎず、その一文がEMやisqlw等でMSDEに
自由に接続してもよいってことを意味しているわけではない、だった。

WEBサーバとDBサーバを別々のマシンにするなら、DBサーバ側にはServer系OSに
CPUライセンスなSQL Serverを搭載しろ、と言われたことがあるような。

855 :NAME IS NULL:2006/02/18(土) 20:32:15 ID:???
>>854
うーん、ちょっと認識が違うねぇ。

https://www.microsoft.com/japan/sql/prodinfo/previousversions/license/license_attention.mspx

によると、

> MSDE は、Microsoft Access 2000 や Office Developer Edition 2000、Visual StudioR 6.0 など、
> 様々なマイクロソフト製品で利用できるデータエンジンで、Microsoft SQL Server と 100 % 互換です。
> MSDE は、これらの製品と連携して、あるいはスタンドアロンで用いることができ、その際 CAL は
> 一切不要です。

ということなんで、ライセンスフリーといえると思うんだけど。

あと、

> その一文がEMやisqlw等でMSDEに
> 自由に接続してもよいってことを意味しているわけではない、だった。

それは当然。それらのツールは、SQL Server のクライアントライセンスがないと使えない
ものだからね。

856 :NAME IS NULL:2006/02/18(土) 20:33:50 ID:???
>>854
> よく分からん。ADOなVBアプリ等のデータ格納先としての、Accessよりかはもちっとマシな
> ローカルでスタンドアローンなDB利用を想定、なのかな?
かもな
だがそこに、いろいろ機能を持たせているから

だからといってBackup Execとかどこぞのサーバ監視ソリューションとかみたいに、
SQL SERVER 2000をインスコしてあるサーバに勝手にMSDEをインスコしようとするのは
勘弁してほしいものだが

857 :NAME IS NULL:2006/02/19(日) 00:31:41 ID:???
ライセンス違反をするとどうなりますか?

858 :NAME IS NULL:2006/02/19(日) 00:48:14 ID:???
>>857
最悪訴えられる。で、損害賠償。

859 :NAME IS NULL:2006/02/19(日) 01:23:27 ID:???
本当かよ〜
MSが決めたルールで損害賠償取られたら、たまんねえな。

860 :NAME IS NULL:2006/02/19(日) 01:33:12 ID:???
>>859
嫌なら使わなきゃいい。

861 :NAME IS NULL:2006/02/19(日) 01:38:17 ID:???
SQL Serverがいやなら、Oracleを使えばいいじゃない(マリー

862 :NAME IS NULL:2006/02/19(日) 02:01:19 ID:???
>128 >129
で、クエリアナライザのデバッガがブレイクポイントを設定しても止まらないとなっているのですが、
同じことで悩んでいます。
アナライザ用のSP4パッチを当てて解決となっているのですが、これがどこにあるか
分かる方いらっしゃいませんか?SQLServer2000 SP4を当ててみても解決しませんでした。
よろしくお願いします。

863 :NAME IS NULL:2006/02/20(月) 11:22:55 ID:???
SQLServerXEインストしたんだけど、SQL文たたくGUIついてないの??
使え寝レナ。せっかく、もれが試してやろうと思ったのに。
メンドくせぇ。


864 :NAME IS NULL:2006/02/20(月) 18:52:09 ID:???
>>863
つ Common SQL Environment

865 :NAME IS NULL:2006/02/20(月) 20:06:46 ID:???
>>863
バカ丸出し m9(^Д^)プギャー!!

866 :NAME IS NULL:2006/02/22(水) 00:00:48 ID:???
SQL Server 2000 SP4の環境で、ntext型のカラムに(JDBC経由で入れた)データが
Enterprise Managerからどうも見えないんだけど、どうしたらいいんでしょう?
ちなみにtext型は見えます。
JDBC経由で読んでみて、データが入っていることは確認できています。
データが大きすぎるのか、あるいはどこかに設定があるのかとか思ったのですが
未解決です。


867 :NAME IS NULL:2006/02/22(水) 10:27:05 ID:???
SQL7のバックアップをSQL2000で復元できなくて困っています。
やりかた教えてエロイ人

868 :NAME IS NULL:2006/02/22(水) 11:41:51 ID:???
>>867
おいらエロくないんで正しく答えられないんだけど、

「復元できなくて」だけでは情報が足りないよ。
どういう操作をしたのか(EnterpriseManagerからとか、osql上とか、そのコマンドラインを具体的にとか、
またはサードパーティのバックアップツールを使用したとか)、
バックアップの格納先(TAPEか、HDとか)、
どういうエラーメッセージが返ってくるのかとか書かないとレスがつかないと思うよ。


869 :NAME IS NULL:2006/02/22(水) 12:25:06 ID:???
>>867
2000のバックアップを2000に復元するときと同じです。

870 :NAME IS NULL:2006/02/22(水) 15:51:41 ID:???
>>869
>>868

871 :NAME IS NULL:2006/02/22(水) 16:04:30 ID:yYoQEzDb
開発用サーバーにSQL Server2000開発版入れたら「セキュリティエラー」って出てアクセス出来なくて調査してたら…。

証明機関の名前が Windows 2000 コンピュータのホスト名と同じ場合に SQL Server 2000 に接続できない
http://support.microsoft.com/default.aspx?scid=kb;ja;302409

まさか、コンピュータ名が原因だったとは。おれの午前中返せー。


872 :NAME IS NULL:2006/02/22(水) 16:06:40 ID:???
それってCAサーバにこのDBいをインストールして使えないってこと?

873 :NAME IS NULL:2006/02/22(水) 16:24:10 ID:EZO5Nqv4
>>871
IDがデータベース


874 :867:2006/02/22(水) 16:41:49 ID:???
>868>869
スマソ、説明不足杉でした
SQL7>SQL2000の際にEnterpriseManagerがなんのメッセージも無く強制終了する現象です。
ログも残っていなく、原因が全く掴めず諦め気味orz
ウィザード系の何かが壊れているかもしれませぬ

875 :NAME IS NULL:2006/02/22(水) 17:50:58 ID:???
osqlか、クエリアナライザからコマンドラインでやってみたら?
GUIに頼りきりだと、いつか困ることが出てくるよ(>>874の現象とか)。
コマンドラインで管理するようにすれば、いろいろ応用も利くし、ドキュメントに残すことも容易。


876 :NAME IS NULL:2006/02/22(水) 20:09:42 ID:xCOU+l7M
text型で文字列結合できないんですが・・・
こんな感じ↓
update set text1=text1+'moji' from table1

どうやって回避するのが一般的?

877 :NAME IS NULL:2006/02/22(水) 20:47:48 ID:???
構文おかしくない?

update table1 set text1=text1+'moji'

878 :NAME IS NULL:2006/02/22(水) 20:58:08 ID:Sf/3sROs
ストアドでおききします。
BEGIN TRANSACTION
declare @add_id int
declare @cat_id int
declare @id int
set @add_id = (SELECT [@add_id] FROM View_address WHERE ([@add] = @add))
set @cat_id = (SELECT  name_id FROM mas_category_name WHERE (var_name = @cat))
if (SELECT id FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1
--新規登録
INSERT INTO entry_id(var_member_id, var_pass)VALUES(@member_id, @pass)
set @id = scope_identity()
IF(@@ERROR<>0) GOTO err_label
INSERT INTO entry(add_id, var_banti, e_id)VALUES(@add_id, @banti, @id)
set @ret = scope_identity()
if @url is not null
INSERT INTO url(var_url, var_title)VALUES(@url, @title)
IF(@@ERROR<>0) GOTO err_label
else
set @id = (SELECT id FROM entry_id  WHERE (var_member_id = @member_id) AND (var_pass = @pass))
UPDATE  entry SET add_id = @add_id, var_banti = @banti , e_id = @id WHERE (id = @id) if @url is not null
 INSERT INTO url (var_url, var_title) VALUES (@url, @title) set @ret = @id
COMMIT TRANSACTION
RETURN(0)
err_label:
ROLLBACK TRANSACTION
RETURN(1)
とっても見にくくてすいません。
主に新規登録の処でおかしな動きをします。
entryをI)NSERTしたあと、entry_idをINSERTしなくてはいけないのですが、entryがINSERTしません。
当然@idのscope_identity()をしているのですが、Nullが入ります。
「if」の使いすぎでしょうか?それとも使用方法事態間違っていますか?

879 :NAME IS NULL:2006/02/22(水) 21:16:09 ID:???
とりあえず、BEGIN 〜 END で括って。流れがわからん。

880 :NAME IS NULL:2006/02/22(水) 22:15:42 ID:???
本人もそこでわからなくなっているんじゃ

881 :NAME IS NULL:2006/02/22(水) 22:20:45 ID:???
>>876
UPDATETEXT

882 :NAME IS NULL:2006/02/22(水) 22:37:04 ID:???
>>878
>if (SELECT id FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1

count(id)にすればとりあえず動くんじゃないの。
普通はNOT EXISTSを使うところだが。

883 :878:2006/02/22(水) 22:42:14 ID:???
解決しました。
なんてことはない話で9行目の
if (SELECT id FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1

if (SELECT count(id) as [abc] FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1
になっていなかっただけでした。
>879
括ってどういう意味ですか?


884 :NAME IS NULL:2006/02/22(水) 22:42:44 ID:???
>if (SELECT id FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1 
これが、このあたりの勘違いということはない?
if not exists (SELECT id FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass))
if (SELECT count(id) FROM entry_id WHERE (var_member_id = @member_id) AND (var_pass = @pass)) < 1

885 :878:2006/02/22(水) 22:43:55 ID:???
>882
入力している間にレスが・・
ありがとうございました。
これでやっと帰れます

886 :878:2006/02/22(水) 22:45:55 ID:???
>884
ぁぁ・・・またやってしまいました
ここの住人は皆優しいな。・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)

887 :NAME IS NULL:2006/02/22(水) 22:52:08 ID:???
>>883
if 条件
  1命令

if 条件
BEGIN
  複数命令
END

set @id = scope_identity() はifから外れているはず。

888 :878:2006/02/22(水) 23:48:58 ID:???
>>887
ありがとうございます。
複数命令の時はBEGINの中にいれるのですか!
ヤバイ・・めちゃくちゃ手を入れないとダメっぽいです
本には全然書いてなかったです

  ち  く  し  ょ  ー

889 :NAME IS NULL:2006/02/23(木) 01:43:36 ID:???
>>888
、一般のプログラミング言語触った事あれば、
複数の文を書く時に、なんとなく注意する癖がついてるよ。



890 :867:2006/02/23(木) 14:56:04 ID:???
>875
osqlを調べてみたが難しそうね・・・俺の能力ではきついぽい
でもやるしかなさそうなんで頑張ってみるよ
thx.

891 :NAME IS NULL:2006/02/23(木) 15:14:01 ID:???
SQL Server2005の評価版って使用期間過ぎると起動すらしなくなるんですよね?


892 :NAME IS NULL:2006/02/24(金) 00:34:43 ID:???
>>889
つうか一行だろうが複数行だろうが脳使わずにBEGINとENDで囲むってしちまえば
そんな悩み無くなっていいじゃん、とすら思う

>>890
復元の時にEnterprise Managerの中の人が行った処理を見ればRESTORE等を
どう使うのかってのが分かるんジャマイカ
ところでEnterprise Managerが裏で投げてるSQLとかってどうやって見るんだっけ?

893 :NAME IS NULL:2006/02/24(金) 00:47:49 ID:???
>>892
つプロファイラ

894 :NAME IS NULL:2006/02/24(金) 01:11:31 ID:???
>>893
ああ、そうだったな
サンクス

895 :NAME IS NULL:2006/02/25(土) 18:40:05 ID:???
>>891
試用期限を気にするくらいならdev版を買ってしまう方がいい。

896 :NAME IS NULL:2006/02/26(日) 07:57:37 ID:???
2005のマニュアルってまだ発売されないんですかね?
それとも2000ので十分ですか?
当方、ORACLE使いで今回のプロジェクトで久しぶりにMS-SQL使うことに
なり、困ってます。

897 :NAME IS NULL:2006/02/26(日) 09:06:06 ID:???
>>896
http://www.microsoft.com/downloads/details.aspx?FamilyID=be6a2c5d-00df-4220-b133-29c1e0b6585f&DisplayLang=ja

898 :NAME IS NULL:2006/02/26(日) 09:13:10 ID:???
>>896
2005は変更箇所も多いし、
ここにある自習書も役立つかもね
http://www.microsoft.com/japan/sql/techinfo/default.mspx


899 :896:2006/02/26(日) 23:59:54 ID:???
>>897-898
サンクス!
MSはメーカーが無償でこんなに技術情報を提供してたんですね!(゜-゜)
MySQLの買収しか頭にないどっかのメーカーとは違いますね(ーー;)

900 :NAME IS NULL:2006/02/27(月) 00:12:51 ID:???
あっちもマニュアル類は大量に無償で配布してますよ。
パッチにサポート契約が必要なのがあれだけどね〜

901 :NAME IS NULL:2006/02/28(火) 00:32:14 ID:UNA+7DVN

今から2000を購入して開発するってアフォですか?


902 :NAME IS NULL:2006/02/28(火) 00:34:43 ID:???
>>901
2000ならいいじゃない。それ以前のヴァージョンなら考え直せというけど。

903 :NAME IS NULL:2006/02/28(火) 00:43:52 ID:???
2005があとどれだけ枯れる余地があるかということと、2000が枯れているかどうかってのを
どういう価値観で判断するかだろうな
さすがに7とかなら、MSDE2000でもいいからそっちにしるって思うだろうが

904 :NAME IS NULL:2006/02/28(火) 07:56:38 ID:???
今から2000、大アリだと思う。
実績やノウハウの量が文句なし。
ServicePackもいくつも出て安定性も十分。

2005へのマイグレーションも簡単だし。
(うちのところは大量のストアド内で結合構文が古い書き方だから
 やむなく2005の互換性レベルを変えてしのぐ方針だが…)

905 :NAME IS NULL:2006/02/28(火) 08:36:27 ID:???
>>904
うお =* は過去帳入りなの?

906 :NAME IS NULL:2006/02/28(火) 10:44:02 ID:DclAQVmI
素人臭い質問で失礼します。

SQL2000Serverで取得したトランザクションのログ(拡張子が.TRNです)から、
どんなトランザクションがあったのか集計を行いたいのですが、
そもそもバイナリデータの為、見ることも出来ません。

とりあえず、見れるようにデータ変換をしたいのですが、
どのようにすればいいのでしょうか。

907 :NAME IS NULL:2006/02/28(火) 11:42:28 ID:???
>>906
これで何とかならないかな?
ttp://www.red-gate.jp/products/SQL_Log_Rescue/index.htm


908 :NAME IS NULL:2006/02/28(火) 11:48:25 ID:???
Cognosが2005に対応しないとなぁ

909 :NAME IS NULL:2006/02/28(火) 12:15:01 ID:???
>>906
トリガで集計データを作れば?

910 :906:2006/02/28(火) 16:25:56 ID:???
>>907
おおー、これぽいのですが、英語ですかorz
とりあえずインストールまでは完了したのですが、
何故かDBに接続できないと言う結果に。

>>909
もちょっと詳しく!!

911 :NAME IS NULL:2006/02/28(火) 17:31:02 ID:???
>>906
トランザクションログを解析するんじゃなくてプロファイラを上手に使えばいいんじゃねーの

912 :NAME IS NULL:2006/02/28(火) 18:36:18 ID:???
>>910
もうじき日本語版が発売されるよ。
それよりも英語をもっと勉(ry


913 :NAME IS NULL:2006/02/28(火) 20:18:18 ID:???
Integration servicesで転送ツール作ってるけどうまく遺憾ので解説書が欲しいんだが
やっぱBooksOnlineですか・・・

914 :NAME IS NULL:2006/02/28(火) 20:32:53 ID:???
SQL Server 2005 Express Edition
ってPostgreSQLやMySQLより導入は簡単ですか?


915 :NAME IS NULL:2006/02/28(火) 21:37:58 ID:???
インストールするだけならアフォでもできる
...のは他も同じかw

916 :NAME IS NULL:2006/02/28(火) 22:40:12 ID:???
2005だとMySQLの方が若干インストールが簡単。

ってそういう事じゃないんだろうがw

917 :NAME IS NULL:2006/02/28(火) 22:58:38 ID:???
ごめんなさい、そういう事ですorz

MySQLは文字コードの設定がめんどうだったので・・・PostgreSQLは・・・バキュームがめんどうだったので・・・orz
クダラナイシツモンデゴメンナサイ、とりあえずインストールしてみますrz

918 :917:2006/02/28(火) 23:32:55 ID:???
インストール挑戦してみました。

とりあえず、事前にいくつかインストールしないといけないのが
メンドウなくらいで、あとはポチポチ押せば進むので簡単な感じ。

あとは、今回はVPC2004上でインストールしようとしたけど、
自鯖はCPUがC3だから動くかかなり心配。(重そうだし)

最後に「Microsot SQL Server 2005 をインストールできませんでした。」
と親切に教えてくれるのもありがたいですね。

919 :NAME IS NULL:2006/03/01(水) 12:20:56 ID:???
>>918
できなかったのかよっ!

920 :NAME IS NULL:2006/03/01(水) 13:04:35 ID:???
PC を 2台用意して、(PC_A, PC_B) 2台ともに SQL Server をインストール
します。

ここで、PC_A → PC_B に、1日1度単位でいいので、データベースを
コピーしたいと思っています。

これは PC_A が壊れた時に PC_B を代替機として使えるように
したい為、PC_A のデータベースを、日次単位程度で
PC_B にコピーしたい、という事になります。

上記のような事を実現させるのによい方法があれば
アドバイス頂けないでしょうか?

921 :NAME IS NULL:2006/03/01(水) 13:14:09 ID:???
>>920
レプリケーションかDTSタスク

922 :NAME IS NULL:2006/03/01(水) 15:50:40 ID:???
MSDEて一つのデータベースが2GB制限ですよね。
WorkgroupEditionはその辺そうなんでしょうか。
http://www.microsoft.com/japan/sql/prodinfo/previousversions/features/choosing.mspx

この辺みてもよくわからないのですが、どなたか教えてください。お願いします。

923 :NAME IS NULL:2006/03/01(水) 16:56:55 ID:???
>>922
Workgroup Edition に容量制限は事実上ない。はず。
http://www.microsoft.com/japan/sql/prodinfo/previousversions/Specmax.mspx
ここの データベースサイズ の項が適用される。はず。

924 :NAME IS NULL:2006/03/01(水) 16:58:58 ID:???
じゃなくて ファイルサイズ の項か。

925 :NAME IS NULL:2006/03/01(水) 17:01:16 ID:???
>924
うほ、さんくす。助かりました。

926 :NAME IS NULL:2006/03/01(水) 18:56:09 ID:???
>>918-919ワラタ
しかもC3ってところがまた渋いw

927 :NAME IS NULL:2006/03/02(木) 00:06:13 ID:N5vujdH7
Developerって、どのような場合に買うのですか?
いずれは、本番稼動用にStandardかWorkgroupを買うのに必要なのですか?

928 :NAME IS NULL:2006/03/02(木) 00:06:54 ID:???
>>927
開発用。

本番稼動は、稼動先にライセンスを買ってもらう。

929 :927:2006/03/02(木) 00:07:14 ID:N5vujdH7
それともGUIツールのないMSDEの開発用ですか?

930 :927:2006/03/02(木) 00:08:02 ID:N5vujdH7
>>928
社内開発の場合は不要ですか?

931 :NAME IS NULL:2006/03/02(木) 00:08:25 ID:???
>>930
不要でしょ。

932 :NAME IS NULL:2006/03/02(木) 00:19:30 ID:???
>>930
必要だよ
社内の利用組織側に買ってもらえ

933 :NAME IS NULL:2006/03/02(木) 22:04:49 ID:???
社内で開発するところまでならDeveloper EditionでOK。
それで作ったシステムを利用するとなったら
社内だろうが客先だろうがStandardとかが必要になる。

まあSE会社の社内だったらMSDEで十分だろうけどね


934 :NAME IS NULL:2006/03/03(金) 00:16:08 ID:SJ0DXsHh
Developerで開発して、Workgroupに移行するなら最初からWorkgroupで
開発すればいいのでは?まぁ5千円の節約にしか過ぎないが、移行の
手間がいやだね!



935 :NAME IS NULL:2006/03/03(金) 00:35:55 ID:???
うんそうだね。

そう思うならそうすると良いよ。

936 :NAME IS NULL:2006/03/03(金) 01:08:44 ID:???
>935
なんか頭悪いのが出てきたなw


937 :NAME IS NULL:2006/03/03(金) 01:26:43 ID:???
934には敵わんだろ。

938 :NAME IS NULL:2006/03/03(金) 02:00:55 ID:Ez5vYUbc
クエリー結果で列見出し(項目名)を表示させないためにはどうする?


939 :NAME IS NULL:2006/03/03(金) 11:29:39 ID:???
>>938
こういうこと?
SELECT Column1 AS ' '
FROM Table1

何か意味があるのか?

940 :NAME IS NULL:2006/03/03(金) 12:04:35 ID:???
osqlとかでの話じゃねーのか

941 :NAME IS NULL:2006/03/04(土) 08:04:37 ID:95Clvg4d
SQLServerのストアドプロシージャで、大量の業務処理を並行稼動
させていて、ロックリソースの取得エラーでこけてしまいます。
ロックリソース用のメモリをある程度まとまった単位で確保しておく
ことはできないものでしょうか?
何か良い解決策もあったら教えていただけないでしょうか。
ちなみにSQLServerのメモリ割り当ては動的設定しており、初期割り当ては
500M程度にしてあります。

942 :NAME IS NULL:2006/03/04(土) 08:28:17 ID:???
>>941
デッドロックが起きてる可能性は無いのか?もしそうならメモリ増やしてもまた起きるが。

943 :NAME IS NULL:2006/03/04(土) 11:15:05 ID:95Clvg4d
デッドロックはないです。
SQLServetrログを見ると単純にロックリソースが不足している、とあり
業務アプリ側はDBMSから変な戻りが返ってきたと判断して異常終了
しています。従って、並行実行している処理が完了後にこけた処理を
単独で再実行すると普通に正常終了します。
私見では、ロックリソース用に固定でまとまったメモリ領域を予約
できればいいのかなあ、と思うのですが、可能なのでしょうか。
マニュアルを見ると、SQLServerが起動した際に割り当てされる全メモリ
の何%かを初期値としてロックリソース用に割り振るとあります。
この「何%」というのをコントロールできないものでしょうか。


944 :NAME IS NULL:2006/03/04(土) 12:40:02 ID:???
せめてバージョンぐらい書けと

945 :NAME IS NULL:2006/03/04(土) 15:52:35 ID:???
2000ならsp_configureでlocksをいじれば明示的に設定できる

946 :NAME IS NULL:2006/03/05(日) 17:33:14 ID:???
SQLServer6.5でカラムのデータ型って変更できないんでしたっけ?

 手元には7.0しかないので互換モードを6.5に変更して
テストしてるんですがALTER COLUMNは7.0からのサポートなので・・・。

947 :NAME IS NULL:2006/03/05(日) 23:44:50 ID:Yk+EdwaQ
1秒間当たりのトランザクション数を知りたくて
プロファイラを使用しようと思ってるのですが、
どうやって活用すればいいのかがわかりません。
是非教えていただけないでしょうか?

948 :NAME IS NULL:2006/03/06(月) 00:06:42 ID:???
>947
パフォーマンスモニタを使った方が楽だぞ。

949 :NAME IS NULL:2006/03/06(月) 00:42:54 ID:???
>>946
6.5と7.0はかなり変わってるから実物でテストしたほうがいい

950 :947:2006/03/06(月) 09:14:02 ID:???
>>948
パフォーマンスモニターの方ですが…。
すみませんが、どうやって測定するのか
教えてもらってもいいでしょうか…m(__)m

951 :947:2006/03/06(月) 10:01:22 ID:???
パフォーマンスモニタで、
SQLServer:DatabasesのTransaction/secを見ればいいんだと
自己解決したのですが
あってますか??

952 :NAME IS NULL:2006/03/06(月) 14:47:41 ID:???
SQL2000のSP4ってMS03-031以降のセキュリティアップデートって何か含んでます?

953 :NAME IS NULL:2006/03/06(月) 15:53:35 ID:???
>>952
精子含んでたような。


954 :NAME IS NULL:2006/03/07(火) 08:51:29 ID:???
                        _____
       / ̄ ̄ ̄ ̄\,,      /−、 −、    \
      /_____  ヽ    /  |  ・|・  | 、    \
      | ─ 、 ─ 、 ヽ |  |   / / `-●−′ \    ヽ
      |  ・|・  |─ |___/   |/ ── |  ──   ヽ   |
      |` - c`─ ′  6 l   |. ── |  ──    |   |
   .   ヽ (____  ,-′   | ── |  ──     |   l
        ヽ ___ /ヽ     ヽ (__|____  / /   
        / |/\/ l ^ヽ    \           / /
        | |      |  |     l━━(t)━━━━┥

955 :NAME IS NULL:2006/03/07(火) 10:53:01 ID:RKE0wbv3
SQL Serverの無料版ありませんか。

956 :NAME IS NULL:2006/03/07(火) 10:56:17 ID:???
MSDE

957 :NAME IS NULL:2006/03/07(火) 11:17:29 ID:???
>>955
http://www.microsoft.com/japan/sql/editions/express/default.mspx

958 :NAME IS NULL:2006/03/07(火) 11:48:36 ID:???
>>957
これって(2000でいう)DTSみたいなのは使えるんですか?

959 :NAME IS NULL:2006/03/07(火) 11:51:31 ID:???
無料なんだから自分で試せよ

960 :NAME IS NULL:2006/03/07(火) 13:33:09 ID:???
>>958
IntegrationServiceは駄目って機能比較のとこに書いてあるじゃん

961 :NAME IS NULL:2006/03/07(火) 18:35:35 ID:???
DTS使えないからMSDEでいいやって思うおれ

962 :NAME IS NULL:2006/03/07(火) 21:45:41 ID:???
MSDEにはDTSはついてないだけで使えるのは使えるんじゃないの?

963 :946:2006/03/07(火) 22:14:07 ID:???
>949
レスありがとうございます。
亀レスすいません。
やっぱり細かく検証するためには6.5必要ですね。

964 :NAME IS NULL:2006/03/08(水) 23:23:02 ID:smSr7Xvp
32bit版上のデータベースをデタッチして、64bit版に正常にアタッチすることは出来ますか?
あと、32bit版から64bit版にmsdbを移すことが出来ますでしょうか?

965 :964:2006/03/08(水) 23:28:03 ID:???
すいません、ググッたら2005はもちろん、2000でも出来るみたいでした。

966 :NAME IS NULL:2006/03/08(水) 23:37:55 ID:???
SQLの記述に関する質問です。

テスト結果テーブル ※KEY項目は無し

名前  年齢 国語  数学  英語
−−−−−−−−−−−−−−−−−−−
たろう 12  10 100  50  ←@
たろう 12  30  50  20  ←A  
はなこ 13  80  50  50  ←B
はなこ 13  90  70  50  ←C
はなこ 14  10  10  10  ←D



項目「名前」と「年齢」が同一のものが複数存在した場合は、
最初の1件目のデータのみ抽出する



<抽出したい結果>
名前  年齢 国語  数学  英語
−−−−−−−−−−−−−−−−−−−
たろう 12  10 100  50  ←@ 
はなこ 13  80  50  50  ←B
はなこ 14  10  10  10  ←D


SQLのみで記述してこのような結果を抽出するには
どうしたら良いのでしょうか?
環境はSQLServer2003です


967 :NAME IS NULL:2006/03/08(水) 23:46:26 ID:???
今から2000のDEV買って開発を始める俺はアフォですか?
あと、もう2000って生産中止ですか?


968 :NAME IS NULL:2006/03/09(木) 00:13:09 ID:???
>>966
最初の1件目というのを判別する連番などのカラムは有りませんか?

969 :NAME IS NULL:2006/03/09(木) 01:32:10 ID:???
>>968
ないようです。
やはり、判別する項目がないと無理そうですよね。

970 :NAME IS NULL:2006/03/09(木) 07:03:36 ID:???
>>969
そもそも、最初の1件ってのが定義あいまいなんだよ。
テーブルに格納されているデータは順序が保証されないから、例のように
1件目って言われても「はぁ?」って感じ


971 :NAME IS NULL:2006/03/09(木) 19:30:39 ID:???
>>968
Excelの行と間違えてないか??

972 :NAME IS NULL:2006/03/09(木) 19:31:43 ID:???
SELECT TOP 1

973 :NAME IS NULL:2006/03/09(木) 20:40:21 ID:???
>>972
order by なしの top 1 だと、たまたま最初にヒットした1件目ということかい?


974 :NAME IS NULL:2006/03/09(木) 21:10:36 ID:???
>>973
そゆこと。最初の1件であることは確か。順序はわからんけどw

975 :NAME IS NULL:2006/03/09(木) 22:05:53 ID:???
真剣に答えようにも>>968-970のように答えようがない。

976 :NAME IS NULL:2006/03/09(木) 23:51:05 ID:???
966です。レス有難うございます。

SELECT DISTINCT 
  TB1.名前,TB1.年齢,TB1.国語,TB1.数学,TB1.英語
FROM
  (
    SELECT
   名前 AS 名前,
      年齢 AS 年齢,
      国語 AS 国語,
      数学 AS 数学,
      英語 AS 英語,
     (文字型の国語+文字型の数学+文字型の英語)AS 科目
    FROM テスト結果テーブル
  )AS TB1,
  (
    SELECT
      名前 AS 名前,
      年齢 AS 年齢,
      MIN(文字型の国語+文字型の数学+文字型の英語) AS 科目
    FROM テスト結果テーブル
    WHERE xxxxx
    GROUP BY
      名前,年齢
  )AS TB2
WHERE TB1.科目=TB2.科目


こんな感じにしてみました。
>>970 の通りなので、これでOKが貰えると思います。


977 :NAME IS NULL:2006/03/10(金) 00:01:48 ID:???
なんで全角で書くかね。

978 :NAME IS NULL:2006/03/10(金) 09:34:28 ID:???
実行するたびに値が変わっても文句は言えないよ。

979 :NAME IS NULL:2006/03/12(日) 01:42:43 ID:???
TOP 1で出てくるレコードって、インデックス無しのテーブルではどうやって決まってるんだ?
リストアで変わったりするようなのだが、そういうものなのか?

980 :NAME IS NULL:2006/03/12(日) 02:18:08 ID:???
>>899
ちょっと日がたってるけど気になったので。

マニュアルも探せないヴぁかのくせに悪態つかないほうがいいぞ。


981 :NAME IS NULL:2006/03/12(日) 18:24:26 ID:???
>>980
余程悔しかったのですね!( ´,_ゝ`)プッ

982 :980:2006/03/12(日) 19:27:18 ID:???
ん?漏れは単なる通りがかりよ。
マニュアルとかってWebを見ればすぐに見つかるものなのに、それすらしないくせに文句言うやつが頭にきただけ。
身近にいるやつとダブった。
聞き流しておくれ。


983 :NAME IS NULL:2006/03/12(日) 20:10:18 ID:???
>>982
そんなに顔を真っ赤にして目に涙を浮かべて必死にならないでも・・・( ´,_ゝ`)プッ


984 :NAME IS NULL:2006/03/13(月) 10:42:20 ID:???
>>979
物理的な読み出し順等になるかと。
バックアップ時に、何らかの順番に変わっていれば
リストアもその順番になるだろう。

985 :NAME IS NULL:2006/03/13(月) 13:13:16 ID:???
>>980-983
       /\___/\
     / -‐'  'ー-' ::: \
     | (●), 、(●)、 | ・・・・バカなんだから
     |  ,,ノ(、_, )ヽ、,,   |    
     \  `ニニ´  .:::/
     /`ー‐--‐‐―´´\

986 :NAME IS NULL:2006/03/13(月) 15:00:02 ID:???
トリガについて教えてください。
レコードが更新された時に、ある列を自動更新がしたく、

CREATE TRIGGER [dbo].[table1_flgupdate] ON [dbo].[table1]
FOR INSERT, UPDATE
AS
UPDATE table1 SET flg = flg + 1
FROM inserted
WHERE table1.code = inserted.code

のようなトリガを作成しました。

フラグの更新はこれで問題なかったのですが、
そのフラグを 0 に戻したい処理があるのですが、
その場合でも、上記トリガで 0 に更新された後に
1 に更新されてしまい、フラグを 0 の状態にできません。

更新された値が 0 の場合は、トリガを実行させないように
するにはどうすればよいでしょうか?

フラグを 0 に更新している箇所で -1 に更新する、というのは
避けたく、トリガの中だけでなんとかしたいと思っています。

アドバイスよろしくお願いします。

987 :NAME IS NULL:2006/03/13(月) 16:11:03 ID:???
>>986
ALTER TABLE xxx DISABLE TIGGER xxx でトリガを無効にするか、
IF UPDATE(flg) を使ってflgが直接更新されたときとそれ以外のときで処理を分ける。

988 :986:2006/03/13(月) 18:22:41 ID:???
>>987
ありがとうございます。

IF UPDATE(flg) を試しているのですがうまくいかないので
おかしい所を指摘頂けないでしょうか?

CREATE TRIGGER trig_name on db.table1
FOR INSERT, UPDATE
AS
IF UPDATE(flg)
RETURN
ELSE
BEGIN
/* 処理 */
END

というトリガがある状態で、

update table1 set flg = 0

とやった場合、トリガの /* 処理 */ の内容が実行されてしまいます。

IF UPDATE(flg) で flg が更新された場合は RETURN しているので
抜けていくと思っているのですが、抜けていきません。

何か大きな勘違いをしていますでしょうか?



989 :NAME IS NULL:2006/03/13(月) 23:09:55 ID:???
>>988
CREATE TRIGGERの説明を読むとIF UPDATE()に対しては
ELSEが使えなさそうだけど、その構文で通った?

990 :986:2006/03/13(月) 23:21:39 ID:???
>>989
ELSE 通りました…。
不安だったので ELSE をやめて、

IF UPDATE(flg) RETURN
BEGIN
/* 処理 */
END

にかえてみましたが同じ結果でした。

991 :NAME IS NULL:2006/03/13(月) 23:25:24 ID:???
>>988
その範囲は間違ってないような。
再帰クエリーオンにしてるとか、処理のところで条件なしのUPDATEを実行してるとかしてない?

992 :986:2006/03/13(月) 23:49:45 ID:???
>>991
ありがとうございます。整理して調査してみたら
別のトリガで更新された結果、再度トリガが起動されているような
状態でした。失礼しました。

1つ気になる所があるので教えて頂きたいのですが、
IF UPDATE(flg) RETURN
の flg が、テーブルデザイン上でデフォルト値が設定されたいた場合
INSERT のトリガで UPDATE(flg) はどのように判断されるのでしょうか?

というのは、今度は INSERT で UPDATE(flg) にひっかかってしまい、
RETURN で抜けてしまうようでそれ以降の処理が実行されなく
なってしまいました。この IF UPDATE(flg) RETURN の行をコメント
アウトすると処理が実行されるので flg が更新対象フィールド
という判定になっていると思うのですが、INSERT を行なっている
箇所をみても flg に値はセットしておらず、考えられるのが
デフォルト値に設定されているからかな、と思うのですが…。



993 :NAME IS NULL:2006/03/14(火) 00:01:01 ID:???
根本的な質問だけと、みんな、何で接続してる?

 ODBC、ADO、DAO〜
 OLE DB....他になんかあるか?

 パフォーマンス重視するなら何がいいよ?
 
 一概に何がいいとは言い切れないと思うけど....

 



994 :NAME IS NULL:2006/03/14(火) 07:33:52 ID:???
普通、ADOだろ。
つか、OLE DBインターフェースをラップしたものがADOで、
ODBCインタフェースやOLE DBインターフェースを直接呼んでる人は
おつかれさんって感じ。

995 :NAME IS NULL:2006/03/14(火) 08:36:03 ID:???
Java/JDBCでやってる。


996 :NAME IS NULL:2006/03/14(火) 12:15:02 ID:???
生産性も納期も無視してアプリケーションのパフォーマンスだけを追求できるような
研究職じゃないんでね

997 :NAME IS NULL:2006/03/14(火) 12:56:19 ID:???
BDE/SQL Link...

998 :NAME IS NULL:2006/03/14(火) 13:04:20 ID:???
>>997
BDEはnvarchar系ダメぽじゃなかったか?
これ使え
ttp://www.crlab.com/sdac


999 :NAME IS NULL:2006/03/14(火) 13:49:34 ID:???
男は黙ってDBLib/NetLib

1000 :NAME IS NULL:2006/03/14(火) 14:06:28 ID:???
元は
男は黙ってサッポロビール
だっけ

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

287 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)