トップページ⇒db
1001コメント339KB

MS SQL Server 総合スレ

■ このスレッドは過去ログ倉庫に格納されています
0001<NULL>03/07/01 21:11ID:???
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

http://www.microsoft.com/japan/sql/
0153NAME IS NULL03/10/18 13:13ID:/LPFMQOT
>>152

MSDE使ったことありませんがユーザ設定とかってあるのでしょうか?
SQL SERVERでたまにユーザ設定をしていなくてログイン出来ないと
困っている人がいるのですが。
0154NAME IS NULL03/10/18 13:29ID:???
Win98では強制的にSQL認証になるからsaで無条件にログインできる。
0155NAME IS NULL03/10/20 14:49ID:???
test('-'。)キター(。'-')。。('-'。)キター(。'-')。。('-'。)キター(。'-')
015612103/10/20 15:58ID:b5RqcW0O
maxell.co.jpには日本語が不自由な人がいるようです。
ttp://www7.big.or.jp/~pinball/discus/sqls/22731.html
0157NAME IS NULL03/10/20 20:44ID:???
>>156
2ch的煽りで情報が出ると思ってるのかな(w

あまりにも、あまりにも、だから笑える。
0158NAME IS NULL03/10/23 00:21ID:???
確信犯だろ・・・
そうでなけりゃマジで知障。
会社にチクればヘタすればクビだ。
0159NAME IS NULL03/10/23 20:54ID:???
>>158
こーゆう恥かしいの放し飼いにしてるのは会社自体が2流だから、首にはならんだろ。
恥かしいのすら出てこない、5流以下の会社も多いけどな(w
0160NAME IS NULL03/10/24 01:41ID:???
>>156
コイツ、SQL ServerエンジンとAnalysisが同じもんだと思ってそうだな。
しかし何が言いたいのかまったくよくわらん文章だな(w
0161NAME IS NULL03/10/24 06:45ID:???
>>158-160
だが藻前らよりも遥かに給料が多い
0162NAME IS NULL03/10/24 09:01ID:???
>161=156のリンク先の中の人
0163NAME IS NULL03/10/24 14:52ID:I68UZVLD
VBでSQL Serverのあるサーバーにアクセスするプログラムを
作ったのですが、いざ客先でEXEを起動すると
<初期化文字列の形式はOLE DB仕様に準拠していません>
というダイアログが出て終了してしまいました。
何が原因なのでしょう?
0164NAME IS NULL03/10/24 15:57ID:QHM+8JsC
おまえの頭
0165NAME IS NULL03/10/24 19:58ID:???
>>163
とりあえず、インスコしよう。
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c
0166NAME IS NULL03/10/26 02:55ID:???
Server: Msg 3624, Level 20, State 1, Line 1
Location: q:\SPHINX\NTDBMS\storeng\drs\include\record.inl:1447
Expression: m_SizeRec > 0 && m_SizeRec <= MAXDATAROW
SPID: 54
Process ID: 784

以上のエラーが不定期に出て困っています。なにが原因で起こるのか見当がつきません。
何卒ご教授願えませんでしょうか。
0167NAME IS NULL03/10/26 03:01ID:yMVkw4Qf

ご教授 キタ━━━━(゚∀゚)━━━━ッ!!
0168NAME IS NULL03/10/26 10:58ID:???
>>166
http://www.experts-exchange.com/Databases/Microsoft_SQL_Server/Q_20307973.html
016916603/10/26 17:58ID:???
>>167-168
今のところ、なんとか解決したようにみえます。
どうもありがとうございました。
0170NAME IS NULL03/10/30 15:27ID:nelBRxzy
指定した名前のテーブルが存在するかどうかチェックするにはどうすればよいのでしょうか?
以下の方法でとりあえずできたのですが、もっと効率の良い方法はないでしょうか?

if exists (select * from dbo.sysobjects
where id = object_id(N'$name')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
0171NAME IS NULL03/10/30 20:24ID:???
>>170
システムテーブルを参照しる!(って、あったっけ??)

テーブルの存在チェックをしなきゃいけない設計自体がどうかとおぢさんは・・・略
0172NAME IS NULL03/10/30 22:16ID:???
>>170
if exists (select name from master.dbo.sysdatabases where name = 'データベース名')
017317203/10/30 22:24ID:???
ごめん、反射的にデータベースの存在確認しちまった。

if exists (select name from sysobjects where name = 'テーブル名')
0174NAME IS NULL03/10/31 01:35ID:MPayyV2T
現在、ORACE 8.0.5 + VB 6.0 + ODBC(DAO)の環境で動いているアプリを
SQL Server 2000に移行する事になりました。
ソースの変更は出来るだけ少なくしたいので、VBは引き続き6.0を使うのつもりですが、
ODBC+SQL Serverの環境で何か問題ないでしょうか?
他に(ADOとか)変えた方がいいですか?
0175NAME IS NULL03/10/31 02:30ID:???
>>174
DBを変える目的は何なの?
まぁ、余裕があるならADOにしてもいいけど、止めとけ
017617003/10/31 10:50ID:???
>>173
うまくいきました。
ありがとうございます。
0177NAME IS NULL03/11/01 00:50ID:???
>>175
ADOだとマズイことでも?
0178NAME IS NULL03/11/01 01:02ID:???
>>177
意外と面倒だから余裕がなければ止めとけということでは
017917403/11/01 11:25ID:???
とりあえずDAOでSQL Serverとの接続等ができました。
あとは移したデータに主キーとかを付けないといけないし・・・結構面倒だなぁ。

>>175
何か予算の都合でオラクル買えなかったらいしいです。
あと担当者がMS好きな方なので(ry
0180NAME IS NULL03/11/02 11:20ID:K4tQJ7hV
>>174

ODBCに依存しないでADOで直接DBを参照した方が安定しますし、
高速ですよ。DB変える前にプログラムを変えたほうが
効果はあると思いますが…。
018117403/11/02 12:08ID:???
>>180
>ODBCに依存しないでADOで直接DBを参照した方が安定しますし、 高速ですよ。

そうなんですか。最近Web系の仕事ばかりだったので、その辺は疎いです。
調べてみます。ありがとう。
0182NAME IS NULL03/11/03 18:45ID:3bDk0xme
SQL2000で既定のインスタンスにDBを20個ほど作成したら、
エンタープライズマネージャのツリーを展開させる動きが極端に遅くなりますた…

回避策ってあります?
名前付インスタンスを作ってインスタンスを分けるのって効果あるのでしょうか?
メモリやCPUのリソース配分は同じような気がするのですが。
0183NAME IS NULL03/11/04 07:12ID:???
select 〜 from TABLE order by ID

ID
------
1
3
2
5
4
6
------------------------
order by でならべかえられたレコードセットのうち
3〜5のIDだけのレコードセットを取り出すにはどのようなSQL文を書いてから
rs.open sql,conn,3,3
などとやればいいんですか?
いつも3〜5を抜き出すわけではないので、x〜yを抜き出すSQL文で任意の範囲のレコードセットを取得したいです。
0184NAME IS NULL03/11/04 11:44ID:???
where (ID => 3 and ID <= 5)
0185NAME IS NULL03/11/04 11:45ID:???
where (ID => 3 and ID <= 5)
018618303/11/04 23:16ID:???
ちょっと言い方間違ってました。
order byでならべたレコードセットのx番目からx+1番目、x+2番目までの3個取り出したいです。
0187NAME IS NULL03/11/05 00:34ID:???
となるとopenした後にmovenextの回数とxを比較していくしかないのでわ(;´Д`)
018818303/11/05 01:00ID:???
>>187
わたしもそれがおもいついてたのですが、
ASPにはDoeventに相当するメソッドがないみたいなのではげしくrs.movenextをしたくないなあとおもってたところだったのです。
SQLにはTOPキーワードしかないようですし。
結局movenextで最初の数レコードをスルーして目的のレコードを操作することになるようです。
0189NAME IS NULL03/11/05 01:38ID:SZeIyv6y
mdfからのDB復旧方法についてご存知のかた,教えてください
0190NAME IS NULL03/11/05 20:39ID:???
>>189
これがやりたいのか?
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/howtosql/ht_7_design_4wq1.asp

てか、ちゃんとdumpとれよ。
0191NAME IS NULL03/11/06 03:53ID:???
>>183
orderした結果に順位をつけるクエリーはチラホラ見るから
それの応用でできるのでは?

あとはoederした結果をidentityつきのtemp tableに放り込むくらいか
019218303/11/06 20:07ID:???
>>191
むぅそうですか。
0193NAME IS NULL03/11/07 16:59ID:vIZH227m
SQL鯖2KでDB設計しております。
Oracle用としてはObjectBrowserなんかがありますが、SQL鯖に対応しているモデリングツールって無いでしょうか?
0194NAME IS NULL03/11/08 02:16ID:???
>>183
IDが一意ならこんな感じ?

select A.ID
from TABLE as A
where (SELECT COUNT(*) from TABLE B WHERE B.ID <= A.ID) BETWEEN X AND X+3
order by A.ID

0195NAME IS NULL03/11/10 11:21ID:e3FOvSLN
SQL ServerがインストールされているHDDが残り50Mなので
バックアップ用のテーブル(全部で1Gはある)を消したんですが、容量が増えません。
おそらくはACCESSみたいに最適化しないと容量が増えないんだろう、と素人ながら思ったのですが、
SQL ServerにACCESSの最適化みたいなツールはあるんでしょうか?
エンタープライズマネージャーの保守計画を見ても其れらしきものがなくて・・・

情報お持ちのかた、お願い致します。
019619503/11/10 11:25ID:e3FOvSLN
追加で、トランザクションログなんかも凄い容量を食っているみたいです。(1.5G)
今は使用していないDB領域のテーブルのログを削除もしたりしたんですが、(ログの切り捨て)
容量が増える気配はありません。
容量を増やす方法がありましたら、此方もあわせて情報お願いします。

0197NAME IS NULL03/11/10 11:42ID:???
BooksOnlineを「圧縮」というキーワードで探してみると良いであろう
0198NAME IS NULL03/11/10 12:01ID:e3FOvSLN
>>197
保守計画が出てきました。
でもこれって「今すぐ」実行はできないんですよね?
今すぐ実行したいのですが・・・・
0199NAME IS NULL03/11/10 12:16ID:???
もう一歩踏み込んで調べりゃすぐ出てくるはずだが・・・
んじゃ「データベースの圧縮」
0200NAME IS NULL03/11/10 13:33ID:e3FOvSLN
>>199
BooksOnlineではなく、エンタプライズマネージャーのヘルプを見てたっぽいです(−−;
色々出てきたのでちょっと見てみます。
0201NAME IS NULL03/11/11 22:50ID:HlyPcPil
インデックスをつけるときに内部で「ソート処理」をしていると思うのですが、
その場合、マルチプロセッサにすると劇的に速くなりますか?
また、「リレーション処理」の場合は速くなりますか?

RAIDにお金を掛けるか、マルチプロセッサにお金を掛けるか迷っています。
両方にかけるお金がありません。
どうか御助言賜りたく宜しくお願いします。
0202NAME IS NULL03/11/12 00:02ID:???
まずはパフォーマンスチューニングについてキチンと勉強しろ
そうでなければ、どっちに金かけてもたぶん無駄だ

つか「リレーション処理」って何だよ
0203マハgogogo03/11/12 02:03ID:???
昔は6.5使ってました。

サーバーを
PEN-PRO 200Mx2
 から
PEN3 1Gx2
にしたらものすごく早くなった。
0204NAME IS NULL03/11/12 10:18ID:???
>201
まずハッキリして欲しいのは「インデックスをつける時」の意味。
インデクスを構築する速度なのか、インデクスを用いた検索の速度なのか。
0205NAME IS NULL03/11/12 15:26ID:nLaq7bin
排他的ロックのかかって止まってしまっているトランザクションを
手動で強制的に削除する方法ってありますか?

SQLServer2000を使っています。
0206モッ03/11/12 16:25ID:hK4Iz5B9
sql server 6.5なのですが
Identity 属性のフィールドに強制的に任意の数値を入れたいのですが
方法はありますか。。7.0以降では出来るのですが。。
0207NAME IS NULL03/11/12 20:10ID:???
>>202
>つか「リレーション処理」って何だよ

JOIN の事だと思われ

>>205

プロセスをTerminateする。
0208NAME IS NULL03/11/18 03:59ID:???
MSDE 2000 Release A について質問させてください。

MSDE 2000をインストールしていたHDDが故障したので、そのHDDだけ交換し、
MSDE 2000を再インストールしようとしているのですが、インストールできない
状況に陥っています。

PCのOSはWindowsXP SP1です。なおOSを入れてあるHDDは無事でしたので、
OSは再インストール等はしていません。MSDEをインストールしていたHDDには
MSDEしか入っておりませんでした。よって以前の環境とは、インストールされた
osql等のファイル類やmdbファイル等の有無の違いがあります。バックアップは
取得していません。

状況ですが、マイクロソフトからJPN_MSDE2000A.exeをダウンロードしてきて
実行して、展開して作成されたMSDERelAフォルダ内のsetup.exeを
以下のオプションで実行しているのですが、そこで起動してくるWindowsインストーラの
"必要な情報を集めています"のプログレスバーが表示されているダイアログが
プログレスバーが伸びきる途中で消えてしまい、そこでセットアップが終わって
しまいます。

コマンド: > setup.exe SECURITYMODE=SQL SAPWD="(SAのパスワード)"

これらのオプションは、最初にセットアップしたときのものです。

なおプログラムの追加と削除でMSDEをアンインストールしてみたところ、
アンインストールはできてしまいました(よって追加と削除のリストには出てきていない)。

OSから入れなおすしかないのでしょうか?
それともMSDEを強制的に再インストールする方法はありますでしょうか?
0209なし03/11/18 11:19ID:/G1hiR8p
現在、WindowsNTでMSSQL7.0を使っています。
これをRedhadで作成したJAVAを関連付けたいのですが
JDBCはどこからなにをダウンロードしてよいのかわかりません。
0210なし03/11/18 11:19ID:/G1hiR8p
現在、WindowsNTでMSSQL7.0を使っています。
これをRedhadで作成したJAVAを関連付けたいのですが
JDBCはどこからなにをダウンロードしてよいのかわかりません。
0211NAME IS NULL03/11/18 13:32ID:???
>>208
instancenameを指定してインスコしてみ。
0212NAME IS NULL03/11/20 00:48ID:???
>>210
Microsoft からJDBC Driverを
FreeTDSでもいい、、、かなあ・・わからん
0213NAME IS NULL03/11/20 01:35ID:???
MS製品とJAVA・・・水と油(嘘
0214NAME IS NULL03/11/20 10:42ID:CutOn10a
master DB のバックアップはどうして必要なの?
0215NAME IS NULL03/11/20 12:55ID:???
そこに保存されている情報が必要だから。
0216NAME IS NULL03/11/22 01:27ID:vsf5M3mw
Transact-SQLで書式文字列を指定する方法はありませんか?
0000形式にしたり、3桁ごとにカンマ入れたり。
0217NAME IS NULL03/11/22 04:29ID:???
>>216
convert、right、left関数なんかを駆使して編集するほかないです。
ユーザー定義関数を自分で作ることはできますが。
0218NAME IS NULL03/11/22 09:16ID:uwjbYH3S
●●●2004年も被害者がでるのだろうか?●●●
http://sports2.2ch.net/test/read.cgi/kouhaku/1057943092/-100
行政機関、日本の全マスコミ、教育機関などによる、
個人に対する住居不法侵入からの盗聴、盗撮、24時間監視、
ストーカーで収集した個人情報を、
テレビ、新聞、出版物などで嫌がらせをしながら悪用している事実について、
>>1>>394までにまとめました。

2chのマスコミ板 http://society.2ch.net/mass/
●●●マスコミの盗聴、盗撮は許されるのか?●●●
で被害者の訴え、マスコミの隠蔽が、30スレまで続いています。
より多くの人に事実を知って貰うことが、
組織的、計画的な犯罪の刑事責任、民事責任を追及することにつながると考えています。
0219NAME IS NULL03/11/23 00:21ID:+jlhXyEp
>>217
うぅ、、やっぱないんですか…
Accessで出来るのにSQL-Serverで出来ないなんてショック…
0220NAME IS NULL03/11/23 00:31ID:???
>>219
アクセスはフロントエンドまで含んでるからじゃないか?と1しか使ったことが無いのに書いてみる。
0221NAME IS NULL03/11/23 01:27ID:Ol44HGXJ
Analysis Serviceで毎日売上CUBEを作ったのですがある日から突然、メジャー値が全部NULL
になってしまいました
SQL 2K名のですが、Dimensionなどは表示されていて、メジャーがNULL状態でCUBEの処理は
正常終了しています。どなたかなぜNULLになってしまうのかわかる方いますか?
0222NAME IS NULL03/11/25 16:11ID:???
>>221
回答がないときは自分の質問の仕方を疑うべし

技術系メーリングリストで質問するときのパターン・ランゲージ
http://www.hyuki.com/writing/techask.html
0223NAME IS NULL03/11/26 21:53ID:OXc8+WCQ
MSDEの5つまでっていうのはWebサーバで考えた場合どうなるのでしょうか?

ASPからコマンドを実行するのはWebサーバのみなので常に1接続と考えて良いのでしょうか?
10クライアントから同時にアクセスがかかった場合、IIS内で処理待ちが発生しますか?

0224NAME IS NULL03/11/26 22:18ID:???
>>223
Web鯖はマルチスレッドで実行されるので(以下省略
0225NAME IS NULL03/11/26 23:14ID:???
>>223
Web鯖(IIS)にも最大接続数ってあるっぺ?
MSDEと同ず値にすておけ(w
0226NAME IS NULL03/11/27 00:45ID:L+A/B1UD
SQLServerをTCP/IPで外部から接続できるようにしておくのって
セキュリティ大丈夫でしょうか?

VBで作ったクライアントからインターネットを通じて、
サーバ名にグローバルIPを書いて直接コネクトするようなアプリケーションを作っても問題ないんでしょうか?
0227NAME IS NULL03/11/27 01:26ID:???
>>223
・5接続までっていうのは接続制限じゃないから、それ以上つなげられる。
・MSはそれ以上つなげるたびにパフォーマンスが低下すると言ってるけど、
  パフォーマンスの低下具合は売り物と大して変わらないらしい。
・WebのC/Sはつないでデータ送ったらすぐ接続切っちゃうから(非接続型)、たいして接続数は多くならない。

実際に運用してみないとどうなるかは分からんが、10人くらいなら心配することはないと思うよ。
0228NAME IS NULL03/11/27 01:34ID:???
っていうか、マジで使うなら買えよ。
オラクルほど高くない(w
0229NAME IS NULL03/11/27 11:41ID:???
>226
セキュリティ面では問題大有りでせう。
怖すぎてしょうがない。
0230uja03/11/27 17:11ID:IPh6eln4
10万件くらいデータが入っているテーブルがあります。
そのテーブルに金額フィールド(int型)があり
sum(金額)をしたのですが、
sqlserver.exeのメモリ使用量が100Mを超えてしまいました。
しかも時間がいくらたっても解放されないのですが、
これは大丈夫なのでしょうか?

開発用でWinXP ProでMSDEを使用しております。
0231NAME IS NULL03/11/27 20:42ID:???
>>227
つか、Win XP/Win 2k pro だと5接続以上はライセンス違反だろ?
0232NAME IS NULL03/11/27 21:50ID:EvtcCxfJ
>226
>229
みてて質問なんですが
VBがクライアントで、SQLServerなのですが
各クライアントマシンにSQLServerインストールされてません。
つまりODBC。
SQLServerってなんでもあり、ということですか?
質問ですが、オラクルは、各PCにオラクル入ってないとダメですよね?
0233NAME IS NULL03/11/27 21:57ID:???
オラクルっていうかNet○って香具師がいるんじゃなかったか
0234NAME IS NULL03/11/27 22:12ID:EvtcCxfJ
Net○ってOracle製品の黒CDに入ってるヤツでしょうか?
オラクルインストーラーって重いから嫌っております。

0235NAME IS NULL03/11/27 23:25ID:???
>>229
SQL Slammerが蔓延したと言うことは SQL Server のポートが外部に
対して開いていたサイトがカナーリ沢山あったわけだが・・・

MSも懲りただろうからSP3aを当てときゃ大丈夫なんじゃねーの?
0236NAME IS NULL03/11/27 23:29ID:taJy62x3
>>234
オラクルインストーラーってJavaでできてなかった?
0237NAME IS NULL03/11/28 01:27ID:???
>>234
だったら入れんな。
0238NAME IS NULL03/11/28 09:45ID:???
>>231
あれ?そうだっけ?
Serverシリーズ以外では、外部からは1接続すらライセンス違反だった様な気が…。
つまり、XP 2k等でDBサーバの役割をさせては逝けないってトンデモ規約だったと思う。
5接続云々ってのも、パフォーマンスの話だったと思うけど。
0239NAME IS NULL03/11/28 12:07ID:???
5接続のいいわけにパフォーマンスを持ってきただけ
1接続もあかんなんて言ってない
XPはそれに相当するサーバが無いのでその規約は無い
0240NAME IS NULL03/11/28 12:11ID:???
>>238
Windows XP の場合、EULA に書かれている接続数が守れるなら
外向けでの利用も OK だよ。
‥‥まぁ、どうやって守るかが問題で、少なくとも普通の Web サーバ
とかには使えない。イントラ向けならほぼ大丈夫。

ところで、MS-SQL には以下に相当する SQL 文ってある?
SELECT * FROM hogehoge ORDER BY RAND() LIMIT 2
0241NAME IS NULL03/11/28 20:05ID:???
TOP
0242NAME IS NULL03/11/28 20:33ID:???
>>241
SELECT TOP 2 * FROM hogehoge ORDER BY RAND()
なら「RANDが未定義関数」とかでダメでした。
0243NAME IS NULL03/11/28 21:37ID:???
RAND忘れたてた・・・
っていうかそこにRAND入れる理由があるのか?(w
0244NAME IS NULL03/11/28 21:50ID:???
ようするに、テーブルからランダムで2件取りたいのでつ。

適当な列を作って、そこに乱数ぶっこんでソートして取るってのは
既にやってるのですが、もっと効率よくやりたいのでつ。
MS SQL は初めて使うもんで‥‥スマンです
0245NAME IS NULL03/11/29 05:03ID:???
RANDはseed与えないと駄目。BooksOnline読めや。
説明読むとorder byでは使えない気もする
0246NAME IS NULL03/11/29 16:42ID:UMFs6pW6
このような経験のある方いませんでしょうか?
もしよろしければ、解決策を教えてください。

ASPで開発をしてまして、スクリプトはVBS,データベースはSQLServer2000を使用しています。
VBS上でコマンドオブジェクトをCreateし、Inset文を代入、実行すると

String または Binaryデータは切り詰められました

と表示されてしまいます。データ長が長いとかの話かと思うのですが、

実際にテキストを吐き出すようにして、そのテキストをコピーし、SQLをクエリアナライザで実行すると
通常に処理されてしまう現象です。
お心あたりのある方いましたら、ご教授ください。
0247NAME IS NULL03/11/29 20:59ID:???
>>246
先ずは、ADOを最新のものにしてみなはれ。

http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c
0248NAME IS NULL03/11/30 03:07ID:???
>>246
俺も同じエラー見たことある。nvarcharの最大文字数を減らした後だ。
元に戻したら直った。原因不明。解明しといてね。
0249NAME IS NULL03/11/30 14:25ID:???
>>246,248
SET ANSI_WARNINGSの設定だろう
クエリアナライザのデフォルトはオフだったと思う
0250NAME IS NULL03/12/02 10:41ID:QQHwkYSO
t-sqlでdatetime型のデータを文字列に変換して出力する方法ありますか?
たとえば
2003/12/02というデータを20031202として取得したいです。
oracleのto_charのようなものがほしいです。
025125003/12/02 11:01ID:???
自己解決しました。
0252NAME IS NULL03/12/06 17:31ID:XlUqzbM8
SQLで好きな位置に列を追加するにはどうしたらいいですか?
■ このスレッドは過去ログ倉庫に格納されています