X



トップページDB@2ch掲示板
1002コメント327KB
Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

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

過去スレとかめんどいから誰か適当に貼って
0677NAME IS NULL2018/02/13(火) 22:07:12.29ID:???
>>676
データベースのデタッチとアタッチ
0678NAME IS NULL2018/02/13(火) 23:35:26.82ID:???
リンクサーバー設定とかデータベースの設定とかもバックアップする方法ってないものか
ドライブごとバックアップするしかないのかな
0679NAME IS NULL2018/02/14(水) 00:04:57.46ID:???
masterバックアップして戻せば戻ったような
0680NAME IS NULL2018/02/14(水) 02:50:36.19ID:kUpzGWTP
>>673
根本的にリレーショナルデータベースを分かってないのになぜ知ったかぶりをするのか?

リレーショナルデータベースは重い処理をしてるんだぞ?

リレーショナルデータベースの内部処理が見えないから、自分のしょぼいプログラムと比較にならないことをしていることに気づかない。
0681NAME IS NULL2018/02/14(水) 02:53:40.84ID:kUpzGWTP
>>673
そもそもあんたの用語がおかしい。データベースを知らないと思う。データベースを使うのが精一杯で、リレーショナルデータベースの構造も知らないと思われる。

クエリキャッシュなんて言葉はデータベースエンジニアは使わない。
0682NAME IS NULL2018/02/14(水) 03:07:54.32ID:kUpzGWTP
>>673
同じ結果でもいつも速いわけではない。統計情報の取得タイミング、データの傾向の変化で実行プランが最適にならない可能性もあれば、コストが高くても速いこともある。

バッファキャッシュの有無、データファイル読み書きタイミング、速度、OSのキャッシュ、ストレージのキャッシュ、ありとあらゆる条件で性能は決まるのであって、そのなかからどう処理されているかのSQL Serverの情報を元にSQL Serverが言っている処理情報の誤りまで判断して決めることだ。
0683NAME IS NULL2018/02/14(水) 07:51:44.92ID:???
定期的にわくよね。当たり前の一般論をすごいことのように語るID付いてるおっさん。
0684NAME IS NULL2018/02/14(水) 07:55:04.82ID:???
>>682
すごいね。疲れない?
0685NAME IS NULL2018/02/14(水) 10:24:40.03ID:4BYcg5RC
>>677
ありがとうございました。やってみます。
0687NAME IS NULL2018/02/14(水) 18:45:38.91ID:???
>>679
知らなかった。今度からmaster もバックアップする
0688NAME IS NULL2018/02/14(水) 20:48:54.39ID:???
masterリストアするのは簡単じゃないから、再生成するスクリプト作って流すほうが楽かもよ
0689NAME IS NULL2018/02/15(木) 18:22:36.56ID:YBD93ntd
質問です。
顧客テーブルと売上テーブルがあり、顧客IDで紐付いています。
特定の条件の売上が無い(売上テーブルにレコードが存在しない)顧客のみを抽出するには、どのような方法が考えられるでしょうか?

仮テーブルに顧客テーブルの全レコードをコピーし「特定の条件の売上が有る」顧客を削除していく、という方法は思いつきましたが、SQL文のみで実現する方法はあるでしょうか?

無いものは抽出できない、とは思うのですが…
0690NAME IS NULL2018/02/15(木) 18:56:53.86ID:???
>>689
LEFT JOIN

スレチじゃね?
0691NAME IS NULL2018/02/15(木) 19:10:24.66ID:L39WhMJw
>>689
自ら吐いた言霊に呪われとるやんw

無いのは売上
抽出するのは顧客

な?
0692NAME IS NULL2018/02/15(木) 21:10:45.04ID:???
SELECT * FROM 顧客テーブル
WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)

みたいな風かな
0693NAME IS NULL2018/02/15(木) 21:23:39.60ID:???
>>692
そういうINの使い方は悪手だよ
NOT EXISTSかLEFT JOINを使おう
0694NAME IS NULL2018/02/15(木) 21:23:57.09ID:???
>>689
>>690で答え出てるけどないものを抽出するんじゃなくて、「売上に紐付かない顧客」を抽出するってこと
0695NAME IS NULL2018/02/15(木) 21:31:33.97ID:???
>>694
そういうJOINの使い方は悪手だよ
NOT EXISTSを使おう
0697NAME IS NULL2018/02/15(木) 23:18:27.60ID:???
>>696
NOT EXISTSをINNER JOINにするのは無理だし
MySQLはNested Loopしか使えないからね
他の一般的RDBとは事情が違うよ
0698NAME IS NULL2018/02/15(木) 23:21:53.94ID:???
>>695
NOT EXISTSのほうがパフォーマンスいいことのほうが多いけど
LEFT JOINが悪手ってわけでもないと思うけどな

少なくとも質問者はLEFT JOINを理解してない風なので
そっちからはじめたほうがいい
06996892018/02/16(金) 00:03:31.60ID:???
みなさまありがとうございます。
LEFT JOINでできるとは思いませんでした…頭が硬いですね。
教えていただいたNOT EXISTSも調べたところまさにやりたいことでした。
何とかなりそうです。
ありがとうございました。
0700NAME IS NULL2018/02/16(金) 00:31:27.89ID:???
>>695
環境、データ、インデックスとかによって違うからお前さんみたいに盲信してるのが一番ヤバイ
0701NAME IS NULL2018/02/16(金) 01:49:40.19ID:nepixz1J
経験上LEFT JOIN でIS NULLのほうが速い場合がほとんど
0703NAME IS NULL2018/02/16(金) 05:41:07.18ID:???
>>692さんみたいな書き方を良くするんですが、これは遅いのですか?
0704NAME IS NULL2018/02/16(金) 05:43:00.22ID:???
あっ、ただ自分の場合は

「WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)」

ではなく

「WHERE 顧客ID NOT IN (SELECT 顧客ID FROM 売上テーブル)」

と書きます。
0705NAME IS NULL2018/02/16(金) 10:17:03.78ID:???
売上げテーブルに顧客IDでインデックス貼ってあればそんなに遅くない気もする
0706NAME IS NULL2018/02/16(金) 10:51:09.70ID:???
692は自分だけど、後でみなさん言われるとおり

SELECT * FROM 顧客テーブル
WHERE NOT EXISTS (SELECT TOP 1 FROM 売上テーブル WHERE 顧客ID=顧客テーブル.顧客ID)

のほうが速そうだな
0707NAME IS NULL2018/02/16(金) 12:21:10.95ID:???
速いとか遅いとか気にしたいんならDBが適切にメンテされているかを考えるべきやな
SQLの表記のゆれなど考えるだけ無意味
0708NAME IS NULL2018/02/16(金) 15:52:24.98ID:???
NOT INの場合はパフォーマンス以前に
顧客IDがNOT NULLじゃないと意図した結果が得られない可能性がある

NOT NULLなら意図した結果が得られるけど、速度はDBの最適化に依存
INの最適化レベルが高いDBならNOT EXISTSと同程度の速度に場合もある
でもそうならない場合もあるからこういうケースでは基本使わない
0710NAME IS NULL2018/02/16(金) 20:39:05.84ID:yNJxj2Lb
>>700
環境、データ、インデックスとかによって違うからお前さんみたいに
テストした環境でLEFT JOINが速いからLEFT JOINにしてしまう奴が一番ヤバイ
0711NAME IS NULL2018/02/16(金) 20:59:00.37ID:???
>>710
うまい返ししたつもりなんだろうけどアホ晒してるだけやぞww
0712NAME IS NULL2018/02/16(金) 21:08:47.07ID:yNJxj2Lb
>>711
普通に答えただけだけどうまかったか?w
マジかwセンスあんな俺www
0713NAME IS NULL2018/02/16(金) 21:32:20.04ID:???
誰か試してみてよ
0714NAME IS NULL2018/02/16(金) 21:53:09.91ID:???
単純なnot inならouter joinと同じ実行計画吐いたきがする
0715NAME IS NULL2018/02/16(金) 22:16:06.50ID:yNJxj2Lb
>>714
だからたまたまその時その環境でそういう実行プランが作られたという経験を
後生大事に今生の知識として胸にしまいこんでも無駄だと言っておろうが

SQLはいつだってよりシンプルにより直接的にやりたい事を表現してる様に書くべきなんや
0716NAME IS NULL2018/02/16(金) 23:37:28.84ID:???
>>712
誰もうまい返しとは言ってないぞ
日本語の理解力もないとな w
0717NAME IS NULL2018/02/17(土) 00:10:23.40ID:RRaJ3TQN
>>716
は?こっちこそお前がうまい返しと言ったとは言っとらんが???
異次元の理解力だなお前…
というかアスペだなwww
0718NAME IS NULL2018/02/17(土) 00:12:55.27ID:???
ここもID強制表示にしてほしいな
0719NAME IS NULL2018/02/17(土) 00:21:22.92ID:???
>>717
> というかアスペだなwww
自己紹介乙w
0720NAME IS NULL2018/02/17(土) 15:34:21.57ID:lIYg2W3z
5chはROM専みたいな筆不精は、長文が書かれていると、時間をかけて書いていると思い込む。

世の中、超速で読み書きができる人間がいるのだよ。
0721NAME IS NULL2018/02/17(土) 16:12:56.45ID:???
コピペの達人
0723NAME IS NULL2018/02/18(日) 01:31:05.23ID:JhkmGsBQ
>>721
オリジナルです
0724NAME IS NULL2018/02/18(日) 01:32:48.22ID:JhkmGsBQ
仕事でやってるなら仕事が異常に速いひとを知ってるはずだけどな。並の人間の20倍、30倍くらい仕事が速い人もいる。
0725NAME IS NULL2018/02/19(月) 05:02:12.33ID:???
1.5人月で見積もられた仕事を1日で片付ける人か。
さすがにそれは見たことないわw
0726NAME IS NULL2018/02/19(月) 12:21:33.79ID:???
めちゃくちゃキーボード打つの速そう
0727NAME IS NULL2018/02/19(月) 19:22:31.89ID:???
30人にやらせれば余裕で1日で終わるというのに
0728NAME IS NULL2018/02/19(月) 19:45:21.08ID:???
>>726
そんな思考だから仕事遅いんだよ
できる人できない人の違いすら理解できてない
0729NAME IS NULL2018/02/19(月) 20:26:20.69ID:???
だな
キーボード打つ速度とかマジ関係ない
0730NAME IS NULL2018/02/19(月) 20:33:52.86ID:md3NX5hc
仮に1.5人月のコードを5000行とすると
1日でそれ書いて、さらに仕様書とかも書いてテストもするんやで?
めちゃくちゃ打つの速いやん
0731NAME IS NULL2018/02/19(月) 20:40:21.60ID:???
今どき行数で考えるなよ
0732NAME IS NULL2018/02/19(月) 20:55:39.42ID:md3NX5hc
>>731
何で考えても書く行数は変わらんのだけどw
0733NAME IS NULL2018/02/19(月) 21:14:39.42ID:???
無能な働き者の手による大量の無駄なコードは有能な怠け者の手による洗練された短いコードに劣る
0734NAME IS NULL2018/02/19(月) 22:24:25.26ID:md3NX5hc
な?具体的に数字だされると速いやろw
0735NAME IS NULL2018/02/19(月) 23:38:27.02ID:???
>>732
724が言ってるような並の人間より仕事が20倍30倍速いやつってのは
並の人間が5000行書かないと実現出来ない処理を200行程度書くだけで実現したりできるわけ
キーボードだってできるだけ打たなくていい方法を考える

見積もり時に書く行数がほぼ固定されてるような仕事してるなら
できるだけそこから早く抜け出すことだな
0736NAME IS NULL2018/02/20(火) 07:11:59.70ID:D0Bn3/BK
>>735
それコードが圧縮されとるだけやんwコードゴルフかw
コードは20倍圧縮されても作業にかかる時間は速くなっとらんでそれwww
0737NAME IS NULL2018/02/20(火) 07:20:13.02ID:???
典型的な無能の発想だな
0738NAME IS NULL2018/02/20(火) 08:05:15.51ID:oDlAdTII
お前らはどうしてスキルないくせに突飛な主張してマウントとりたがるんや?
俺は笑えるからこうして楽しんどるけど一般的にはみっともないだけやでw
0739NAME IS NULL2018/02/20(火) 14:51:54.91ID:???
どれだけ優秀な人間だろうと、1.5人月で見積もった仕事を1日で片付けたらな
そもそもの見積もりがぼったくりすぎるだけだな
0740NAME IS NULL2018/02/20(火) 17:42:37.73ID:???
>>736
コードを圧縮て
斜め上の発想だね
0741NAME IS NULL2018/02/20(火) 17:49:18.93ID:???
メタプログラミングやコードジェネレーションを考えればいいと思うよ
できるやつは無駄を省いて機械に仕事をさせる
Paul GrahamのLispの話と同じ
0742NAME IS NULL2018/03/03(土) 09:21:09.95ID:???
新進気鋭の「グラフデータベース」って用途が思いつかないな
0743NAME IS NULL2018/03/03(土) 16:40:26.84ID:???
RDBはグラフと相性悪いからな
用途が思いつかないうちは使う必要ない
0744NAME IS NULL2018/03/03(土) 19:29:07.99ID:???
ビッグデータ()とかバズりたい奴向けやろ
0745NAME IS NULL2018/03/03(土) 21:51:50.18ID:???
一昔前の技術で言えば多次元DBと同じようなもん
RDBみたいにあらゆる所で使われる技術ではない
0746NAME IS NULL2018/03/03(土) 21:52:38.80ID:???
グラフデータベース=ビッグデータ()
とか言ってると恥ずかしいよ
0747NAME IS NULL2018/03/04(日) 01:22:04.38ID:elOR/YZE
何年前の話題やねんw
0748NAME IS NULL2018/03/06(火) 20:30:45.91ID:Y3UcuCKK
間違えて全データ消してしまったんですが
ldf/mdfファイルから消す直前のデータに戻す方法ってありますか?
0749NAME IS NULL2018/03/06(火) 22:48:19.99ID:???
バックアップあるなら戻せばいいじゃん?
リカバリモデルにもよるけど
0750NAME IS NULL2018/03/07(水) 00:02:46.51ID:/Gdd1MyZ
bakファイルがなくてldf/mdfファイルだけの状態です
0752NAME IS NULL2018/03/13(火) 12:58:28.97ID:jwO7/+7T
2017 Expressへ32bit windows7接続出来ますか?
0753NAME IS NULL2018/03/13(火) 17:08:26.50ID:???
できますよ
0754NAME IS NULL2018/03/14(水) 07:45:47.09ID:znnrpK8K
ありがとうございました。
WINDOWS認証ですが18456エラーが出ます、あとLOGを見ると明示的に指定されたデータベースを開けませんでした。
とあります、何が悪いのでしょうか?
今までは2005 EXPRESSでした。
0755NAME IS NULL2018/03/14(水) 13:40:26.89ID:???
何時のVerからかは忘れたが、今はマシン名\インスタンス名の形式で指定してやらんと繋がらない
例えばlocalhost\SQLEXPRESS
0756NAME IS NULL2018/03/14(水) 15:02:13.68ID:znnrpK8K
>>755そうですか?試してみます、ありがとうございました。
0757NAME IS NULL2018/03/14(水) 19:11:25.05ID:???
>>754
そのエラーコード以外に状態コードが出てるでしょ
それ込みでググればだいたい原因分かるよ

Error: 18456, Severity: 14, State: 38. <―このStateの部分

メッセージから推測するとPermissionに問題ないなら
そのログインに指定されてるDefault Databaseがないんじゃないのかな?
存在するデータベースを指定してみれば切り分けできる
0758NAME IS NULL2018/03/23(金) 16:35:09.86ID:???
SQL Server 2017 Express の localdb のみをインストールし、コマンドプロンプトから
sqllocaldb start MSSQLLocalDB
として開始しようとすると、
「プロシージャ エントリ ポイント BCryptKeyDerivation がダイナミック リンク ライブラリ bcrypt.dll から見つかりませんでした。」
と出て失敗します。
対処方法はありますか? Windows7 64bit です。
SQLServer2017構成マネージャーにも何も出てこないし、
SQL Server Management Studio で (localdb)\MSSQLLocalDB としても接続できず困っています。
0760NAME IS NULL2018/03/23(金) 21:28:54.62ID:???
>>759 ありがとうございます。

bcrypt.dll ファイル自体は system32 と SysWOW64 のどちらのフォルダにも存在しています。
SQL Server 2017 Express は、そもそも Windows7 はサポート外で、ただし localdb だけならいける、と
いうことなのでやってみたけど、やっぱダメなのか・・
SQL Server Management Studio をちょっと勉強したかったのだが。
0761NAME IS NULL2018/03/24(土) 10:11:24.87ID:???
>>760
「ただしlocaldbだけなら〜」はどこからの情報なのか
0762NAME IS NULL2018/03/24(土) 14:01:15.39ID:???
>>761
これです→ http://diy-kagu.hatenablog.com/entry/2017/08/09/155801
記事は2016だけど、2017でも大丈夫だろうと。
自分の環境特有の理由かもしれない。
もう少しやってみてダメなら 2017 をアンインストールして 2016 で再度やってみる。
SQLの勉強でなくて、SQL Server Management Studio を勉強したい。
0764NAME IS NULL2018/03/26(月) 10:12:43.42ID:???
>>763 ありがとうございます。
2017バージョンの localDB と SSMS をアンインストール後、
2014バージョンの localDB と SSMS を入れ、SSMS から接続までできました。
これで SSMS の勉強ができます。
0765NAME IS NULL2018/03/27(火) 21:04:57.51ID:???
SQL Server 2016 expressで特定のテーブルのアクセスが異常に遅いのですが、何か原因はありますか?

特定のテーブルの情報
・データ50万件 (select count(*)だけで10秒かかる)
・頻繁にインサートしている
・主キーを設定していない

プログラムでDBに接続側がタイムアウトになるくらい何かが起きているようです。
0766NAME IS NULL2018/03/28(水) 13:15:59.84ID:???
そら主キーなかったら遅いだろ
0767NAME IS NULL2018/04/17(火) 14:13:45.26ID:???
sp_who2 をすると、サーバーに繋ぎに来てるコンピュータ名やプログラム名が見れますが
ドメインユーザー名を取得することできませんか。

SQL認証で、ユーザー/パスを全員共通にしてあるんですけど
各接続SPIDに対するドメインユーザー名が判別できるとありがたいんですが。

Windows認証だったら判別つくのですが、プログラムはSQL認証で使いたいです。
(ユーザーがもし SSMS で繋ぎにきたときにテーブル全開示になっちゃうのを防ぐため)
0768NAME IS NULL2018/04/17(火) 19:10:39.61ID:???
できません
0769NAME IS NULL2018/04/19(木) 12:38:19.26ID:???
>>765
俺、そのケースで散々パフォーマンスチューニングだのインデックス再構築だの設計変更だのしてたが、
最終的なオチはExpressのデータファイルの10GB制限に引っかかっててインデックス検索で1MB単位で容量の削除、自動拡張を繰り返してた、
というケースがあった。
今でも当時のことを思い出すと赤面するぐらい恥ずかしい思い出。
0770NAME IS NULL2018/04/19(木) 23:59:08.45ID:???
自動拡張はともかく、容量の削除ってなんだ?
0771NAME IS NULL2018/04/20(金) 00:29:36.06ID:???
>>770
インサートで限界を突破して自動拡張が停止
→ロールバックされて容量が元に戻る
→ギリギリ容量が残ってるので自動拡張が…
以下、タイムアウトするまで(あるいは何とか入りきるまで)延々繰り返し

みたいな(ちょっと詳細省いたけど
0772NAME IS NULL2018/04/21(土) 11:37:33.55ID:???
自動拡張されたデータファイルのサイズはロールバックしても自動的に縮小されたりしなかったと思うんがだが
自動拡張に出来なくて空きがないならエラーで帰ってくるから、タイムアウトまで延々待たされるなんて事も無かったと思うけど
0774NAME IS NULL2018/05/03(木) 17:13:22.69ID:???
SQL Server の参考書でいいやつってどれ?
SQL の文法解説じゃなくて、SQL Server 独特の文化とか、SSMS の操作法とか、そのあたりを学びたい。
0775NAME IS NULL2018/05/03(木) 18:24:13.53ID:aGiZKSfN
>>774
公式DLの自習書シリーズが最強だと思う
ボリュームが多いが参考書臭さがなく実務より
0776NAME IS NULL2018/05/03(木) 18:25:55.90ID:aGiZKSfN
>>774
公式DLの自習書シリーズが最強だと思う
ボリュームが多いが参考書臭さがなく実務より
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況