X



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

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

過去スレとかめんどいから誰か適当に貼って
0420NAME IS NULL
垢版 |
2017/06/04(日) 00:42:41.51ID:???
>>414
なら仮想環境に入れた方が早いな
0421NAME IS NULL
垢版 |
2017/06/04(日) 09:26:51.00ID:???
>>419
>>420
ありがとうございます

macにWindows入れること検討してみたいと思います
macはモニターの色は綺麗だし普段使いには満足してますが、office系ソフトはショートカットが使えなくて戸惑うし一長一短ですね

家に仕事持ち込むわけではないので、まずは会社のWindowsで慣れてから再度考えようと思います
0422NAME IS NULL
垢版 |
2017/06/04(日) 09:35:30.08ID:???
sqlを練習する程度ならmysqlでもいいんじゃないか?
Macでも動くし。
0423NAME IS NULL
垢版 |
2017/06/04(日) 10:27:16.37ID:???
>>422
そうなんですか!?
前に調べてた時macでも使用可なのがあった記憶がベースで今回の質問に至っておりまして…
それがmysqlだったのかもしれません
ありがとうございます!
まずはそこからやってみます
0424NAME IS NULL
垢版 |
2017/06/04(日) 14:59:13.80ID:???
>>423
そんなに驚くなよ。
sql server expressはwindows専用だが
それ以外のフリーなdbソフトは大体はMacでも動くんじゃないか?俺はMac持ってないが
0425NAME IS NULL
垢版 |
2017/06/09(金) 08:22:54.49ID:???
SQLServerのデータファイルの自動拡張がタイムアウトしたってイベントログ出てるんですが
自動拡張時のサイズ小さくすれば解決するもんなのかな?
書き込みが頻発するとディスクアクセスがボトルネックになりそうなんだが

そもそものタイムアウトが発生するところをケアすべきよね
やっぱ
0426NAME IS NULL
垢版 |
2017/06/09(金) 11:20:11.31ID:???
>>425
自動拡張の初期値はファイルサイズのX%なのでサイズがでかくなるにつれ拡張サイズも増えて処理がタイムアウトするから拡張サイズは固定値にした方が良いよ
ログファイルじゃなくてデータファイルならそもそものデータ見積もりが誤っているという話もあるが
0427383
垢版 |
2017/06/14(水) 12:27:42.97ID:???
すんません、
「やってみたら?まぁ上手くいくわけないんだけどなwせいぜい絶望してファントム生んでろw誰もエンゲージしねーけどw」
って事かと思って保留してました。

実践していただいた方もいて、助かりました。やってみます。
自分のPCなんで最悪HDDのイメージ取ってから試せば何とでもなるんですけどね。
試行錯誤できる環境を作る時間がなくて。
でもHDDの空き容量もなくて。
そして人生の余裕もない。
もう死にたい。全てが嫌になった。
0428NAME IS NULL
垢版 |
2017/06/19(月) 23:23:03.91ID:???
SQL2014の自動拡張で質問です。
例えば10MBまたは100MBと指定して拡張されたタイミングまたはログというのは何処で確認できるものでしょうか?

SQL2008だと「ディスク使用量」レポートで確認できるという記事を見かけて
2014環境で確認しましたが思うような結果が得られませんでした。
復旧モデルが単純だったせいなのか、2014では別のレポートで出力出来るのか判断がつきかねています。

ど素人なので的外れな事を書いているかもしれませんが何かヒント頂ければ幸いです。
0429NAME IS NULL
垢版 |
2017/06/21(水) 01:20:46.92ID:???
SSMSで管理のSQL Serverログとか
OSのイベントビューアでアプリケーションログとかになんか吐いてなかったっけ
0430NAME IS NULL
垢版 |
2017/06/21(水) 12:19:47.12ID:HMTE/EOf
なんでちょっとMSの中の人よりの言いかたなんだよw
0431NAME IS NULL
垢版 |
2017/06/21(水) 20:48:17.77ID:???
どの発言がどうMSの中の人よりなのか
0432NAME IS NULL
垢版 |
2017/06/21(水) 21:12:30.65ID:eFBPC0xl
気になるんだったらもう少し謙虚に聞いたら?
0433NAME IS NULL
垢版 |
2017/06/22(木) 23:55:36.11ID:???
>>429
ありがとうございます
ご鞭撻頂いた項目で確認したいと思います
0436NAME IS NULL
垢版 |
2017/07/02(日) 17:23:55.73ID:???
質問させてください。

SQLServer2008 R2で、主キーにクラスタ化インデックスを指定されたあるテーブルに対し、
主キーを指定した単純なSelect文を発行して実際の実行プランを表示させたところ、なぜか「TableScan」となります。

・WHERE句に主キーを指定したのになぜ「Clustered index seek」にならないのでしょうか?
少なくとも「Clustered index scan」にならないのはなぜでしょうか?

この点についてなにかこういうところを確認してみろという部分はありますか?
もしくは実行プラン「Table Scan」でもとくに気にするところではないのでしょうか?
特にSelect結果が遅いわけではなく、1秒もかからないで結果が返ってくるので
特に現時点では致命的ではないのですが・・・

その他の状況としては以下の通りです。
・テーブルのレコード数は数万程度。
・もともとのこのDBはSQLServer2005で作られたものであり、バックアップから復元して互換性レベルを上げてある。
・Indexの再構築を行っている
・別な環境で似たような状況をつくりだし、同じくSelectをしてみたところ、想定した通り「Clustered index seek」となった。
・数ヶ月以上運用され、INSERTやUPDATEなどは繰り返し発生している

以上のような状況なのですが、
なにかわかる方がいらっしゃったらよろしくお願いします。
0437NAME IS NULL
垢版 |
2017/07/02(日) 17:37:33.40ID:9thF4go5
>>436
あのな、インデックスがあればインデックススキャンになるわけじゃないんだよ。データによってはテーブルスキャンの方が速い。それを自動で判断した結果がそういうことだよ。
0438NAME IS NULL
垢版 |
2017/07/02(日) 17:42:57.27ID:???
>>436
UPDATE STATISTICSで統計情報を更新したり、DBCC FREEPROCCACHEで実行プランをクリアするぐらいかね
遅くなる可能性もあるから、事前確認は怠らずにね
0439NAME IS NULL
垢版 |
2017/07/02(日) 17:51:08.05ID:???
>>437-438
早速の返答ありがとうございます。

かならずしもIndex seekのほうがよいわけではないんですね。
統計情報の更新は調べてやってみることにします。
ありがごうとざいます。
0440NAME IS NULL
垢版 |
2017/07/02(日) 18:01:02.66ID:???
数万程度ならどんな実行計画でも時間は変わらない可能性大だが、
どうしても拘束しないたらヒント文を追加すれば?
0441NAME IS NULL
垢版 |
2017/07/02(日) 18:28:22.42ID:???
>>440
ヒント文でインデックスを指定できるんですね。
これでやってみて時間がかわらなそうであれば元の状態で行こうと思います。
ありがとうございました。
0442NAME IS NULL
垢版 |
2017/07/02(日) 19:24:58.07ID:???
1フィールドだけのテーブルがあって、その1フィールドにプライマリキーが設定されてるのを見るとなんか微妙な気分になるw
0443NAME IS NULL
垢版 |
2017/07/02(日) 21:27:03.96ID:???
クラスター化インデックスのあるテーブルってテーブルスキャンは発生しないと思ってんだが違うのか
俺の知る限り、テーブルスキャンするところはすべてクラスターインデックススキャンになるんだが

クラスターインデックスのフルスキャンはテーブルスキャンと実質同じだと思うんだが、何が違うんだろ
テーブルスキャンならクラスターインデックスのリーフページだけをたどれる?
0444NAME IS NULL
垢版 |
2017/07/06(木) 22:57:10.15ID:???
access単体でデータベースを作成するのと、SQLserver+Vbで作成するのは難易度はどのくらい違いますか?
0445NAME IS NULL
垢版 |
2017/07/07(金) 00:32:55.05ID:???
だいぶ前にミラーリングが非推奨の機能になっちゃったけど、これからはクラスタ作ってAlwaysOnでやるしか無いのかね
今時オンプレかよとは言わないで
0446NAME IS NULL
垢版 |
2017/07/07(金) 00:49:20.65ID:???
>>444
それだけの内容では色々分からなすぎて
双方の言語経験があるなら差はほとんどない、としか答えられない
0447NAME IS NULL
垢版 |
2017/07/07(金) 13:53:10.80ID:???
>>445
ミラーリングしたい理由はなによ
0448NAME IS NULL
垢版 |
2017/07/07(金) 14:15:59.58ID:???
ミラーリング、手軽で便利なのにな
0449NAME IS NULL
垢版 |
2017/07/07(金) 19:19:13.94ID:???
>>447
Standardのライセンス2つで安価、手軽に二重化出来ること
試しにAlwaysOn構築しようと思ったら、SQLServer外の条件で制約多くて
0452NAME IS NULL
垢版 |
2017/07/19(水) 07:37:48.82ID:???
>>449
AlwaysOnは知らんが、ミラーリングの場合、待機側はライセンス要らないよ
0453NAME IS NULL
垢版 |
2017/07/19(水) 10:59:44.53ID:???
ますますミラーリングから離れられないわな
AlwaysOnは1台につき1ライセンス必要だし
0454NAME IS NULL
垢版 |
2017/07/20(木) 00:52:16.15ID:???
ミラーリングでライセンスいらないのは、完全に待機のみの場合だけだったはず
ダウンタイムの短縮には役に立つけど、負荷分散には使えないぞ
0455NAME IS NULL
垢版 |
2017/07/20(木) 09:59:09.19ID:???
ミラーリングは負荷分散に使えないが
0457NAME IS NULL
垢版 |
2017/07/31(月) 21:23:54.39ID:???
SQL Server絡みの地雷率が高すぎてうんざりしてきた
windowsしか使えないのでこれ使いました!
プログラムはよくわかんないので中身は適当です!
十数年分の滅茶苦茶に蓄積されたデータは再利用できるようにしてください!
みたいのしかねえ
0458NAME IS NULL
垢版 |
2017/07/31(月) 21:46:50.58ID:lcWS9MWM
>>457
知識の蓄積もない、Microsoftは利用者を育てることが重要だと思ってないからな。
0459NAME IS NULL
垢版 |
2017/08/01(火) 02:12:40.31ID:???
>>458
サポート費用払う前提だがそれなりの対応してると思う
何か問題でもあったのか?
0460NAME IS NULL
垢版 |
2017/08/01(火) 08:09:16.36ID:???
>>457はMSをディスってるんじゃなくてその利用者をディスってるんだろ
むしろそんな連中でもとりあえずのシステムが組めるMS製品群スゲーって話
まあ引き継ぎとかでうんざりする気持ちはよくわかるが w
0461NAME IS NULL
垢版 |
2017/08/01(火) 10:39:33.77ID:???
>>460
とりあえずじゃないからSQLServerの地雷案件が多いんだよな
設定もろくにせずに遅くなったら魔法の言葉「MSの製品だからしょうがない」で誤魔化そうとする阿呆多すぎる
0462NAME IS NULL
垢版 |
2017/08/01(火) 10:45:07.93ID:XS4cIuUu
>>459
日本マイクロソフトのサポートもレベルがひどい
0463NAME IS NULL
垢版 |
2017/08/01(火) 12:48:27.45ID:???
>>461
いちゃもんつけたいだけのアホ乙 w
0464NAME IS NULL
垢版 |
2017/08/01(火) 13:30:45.92ID:XS4cIuUu
>>463
日本ユニシスおつ
0465NAME IS NULL
垢版 |
2017/08/28(月) 21:43:46.23ID:???
教えてください。

SQLServer の View でトリガを使って別のテーブルの編集を行いたいと思います。
ほぼこのページの通りに書いてみたのですが、View の参照元のテーブルにレコードを追加してもトリガが実行されないようです。
https://msdn.microsoft.com/ja-jp/library/def01zh2(v=vs.120).aspx

実際のテスト環境は以下の通りです。
・DB: A
 テーブル01

・DB: B
 ビュー01 (DB:Aのテーブル01を参照)
  トリガ01 (ビュー01に対して INSTEAD OF INSERT でテーブル 02 に情報を追加)
 テーブル02 (テーブル01のキー項目に関連づけて、追加項目を登録)

DB:B は DB:A を参照した試験環境で、DB:B を削除するだけで後腐れなく試験環境を除去できないかな、と考えました。

DB:A のテーブル01にトリガを仕掛ければ問題なくやりたいことは出来るのですが。
ビューのトリガを動かすのには何か設定が必要なのでしょうか。
0466NAME IS NULL
垢版 |
2017/09/09(土) 20:24:20.28ID:???
SET ARITHABORT はヘルプやノウハウ掲示板ではON推奨になってるけど、逆の場合もあるようで、とあるストアドでは

パラメータ:日付指定→行番号取得→本処理
1.ADOのデフォルトでOFF: 1秒
2.SSMSのデフォルトでON: 20秒
3.ストアド内で SET ARITHABORT を記述: 20秒(1、2どちらもONでもOFFでも同じ)
4.ストアド内の記述を外し、SSMSのオプション設定でOFFに変更: 1秒

パラメータ:行番号指定→本処理
5.ADOのデフォルトでOFF: 20秒 ←これが問題だった
6.SSMSのデフォルトでON: 20秒
7.ストアド内で SET ARITHABORT を記述: 20秒(5、6どちらもONでもOFFでも同じ)
8.ストアド内の記述を外し、SSMSのオプション設定でOFFに変更: 1秒
9.その後、ADOのデフォルトでOFF: 1秒 ←解決

パラメータは後者の方が処理が少ないのに、妙に遅かったという問題
接続コンポーネントのSET ARITHABORTのデフォルトの違いによって実行プランが分かれるという話を見て、以上のことをごちゃごちゃやってたら直った
でも解決法が逆

開発当時を覚えてないけど、前者は最初に実行プランができたのがADOでの実行で、後者はSSMSだったのかもしれない
つまり
A.先にADOでSET ARITHABORT OFFで実行→SSMSでONで実行→実行プランが分かれる
B.先にSSMSでONで実行→ADOでOFFで実行→ONの実行プランが使われる
C.Bを解除するにはSSMSでOFFで実行(および再コンパイル?)
つまり、散見するノウハウとは逆にSSMSを常にSET ARITHABORT OFFにした状態で開発した方がいいのかもしれない
ADOもSET ANSI_WARNINGSはONなので、SET ARITHABORTがOFFでも0除算エラーは出るし
ちなみに、SQL Serverは2014
0467NAME IS NULL
垢版 |
2017/09/09(土) 20:49:58.88ID:???
実際酷いのもいるけど、そういうのはむしろORACLE出身だったりするw(内部結合のビューのみでやりきろうとする信じられない低レベルもいる)
SQL Serverは同一ストアド内に制御文と問合せ文が同居できるため工夫の範囲が広く、むしろORACLEよりレベルの高い技術者も多いとも聞く

いずれにせよ前任者はそれを0から構築したわけで(おそらく低予算で)、前任者が悪いんでなく、引き継げない後任者のレベルが低いと考えるべき
前任者のレベルが低いと言うならむしろ引き継ぐだけでなく改善して、処理速度を数十倍〜数百倍に上げてみせるべき
0468NAME IS NULL
垢版 |
2017/09/27(水) 13:50:33.70ID:WjHJ/OaP
復旧モデルについてなのですが、「完全」よりも「単純」の方が余計なことをしない分
処理速度自体は総じて速いという認識で良いのでしょうか?
0470NAME IS NULL
垢版 |
2017/09/27(水) 19:15:37.86ID:???
>>468
処理速度はほとんど変わらないけど、完全はトランザクションログのメンテナンスを疎かにしてトラブル起きやすいイメージ
0471NAME IS NULL
垢版 |
2017/09/27(水) 22:49:22.28ID:???
単純でもトランザクションのロールバックはできるわけだから、ログは取ってるんだが
一括ログ可能な操作だと、単純でも一括ログ方式の最少ログしか取ってないのかな

そうじゃないなら、速度的には一括ログが一番早いんじゃないんじゃね
体感できるとは思えんけど
0472NAME IS NULL
垢版 |
2017/09/28(木) 01:01:37.66ID:???
バッチ処理で大量にデータを
ローディングするようなシステムではそれなりに差が出るよ
BULK INSERTでだいたい20~25%くらい短縮できる
0473NAME IS NULL
垢版 |
2017/09/29(金) 16:50:08.86ID:???
>>472
完全と一括ログの比較じゃなくて
単純より一括ログの方が早いって話?
0474NAME IS NULL
垢版 |
2017/09/29(金) 23:26:37.10ID:???
>>473
単純は一括と同じでしょ
そこは試してないけどマニュアルにはそう書いてるよ
0477NAME IS NULL
垢版 |
2017/10/05(木) 20:59:09.87ID:???
まだ2005が現役で動いているのに
0479NAME IS NULL
垢版 |
2017/10/05(木) 22:00:44.94ID:???
>>478
保守契約切れても何も言ってこないので他社システムに移行したと思ったら、単にケチってただけだったという・・・
0480NAME IS NULL
垢版 |
2017/10/06(金) 22:25:21.69ID:???
うちの社内システムなんてSqlServer2000+VB6だぞw
0481NAME IS NULL
垢版 |
2017/10/07(土) 14:58:41.23ID:???
安定稼働してるDBMSを変更する理由がないからなぁ
ORACLEとかサポート切れたら不安しかないけど
0483NAME IS NULL
垢版 |
2017/10/07(土) 17:07:32.43ID:72uw01jP
格好の標的だね
metasploitみたいの使って簡単に攻撃されるよ
0484480
垢版 |
2017/10/07(土) 17:54:07.20ID:???
>>481
そういやいまだにoo4o使ってるシステムもあったw
0486NAME IS NULL
垢版 |
2017/10/08(日) 22:37:59.43ID:???
そもそもDBに不特定多数が直接接続できるシステムがまれだと思うが
0487NAME IS NULL
垢版 |
2017/10/08(日) 22:42:53.11ID:XmeriWwC
そもそもそういう発想がセキュリティを理解してない
0488NAME IS NULL
垢版 |
2017/10/08(日) 22:43:14.23ID:???
いやまあSQL Slammerみたいな例もあるから何とも言えんけど
DBサーバそのものがネットワークに晒されてるような環境とそうじゃない環境じゃ
求められるセキュリティ強度も違うんじゃないかね
0489NAME IS NULL
垢版 |
2017/10/09(月) 06:16:11.40ID:???
>>486
DBに(社内の)不特定多数が直接接続できるのはまれだと思うがDBが入ってるサーバーに(ログインはできないけど)直接接続できるケースは多いと思うぞ
0490NAME IS NULL
垢版 |
2017/10/09(月) 09:17:26.00ID:???
別サーバーからSSMSからは接続出来ないのに
sqlcmdからは操作出来ちゃうアホな設定のDBがあったなあ
0492NAME IS NULL
垢版 |
2017/10/09(月) 17:49:41.05ID:???
>>490
技とそういう設定にしてるんじゃないか?
0493NAME IS NULL
垢版 |
2017/10/16(月) 09:56:16.87ID:cuhMHRkq
SSMSの最新版が出ているようですが、入れると何か良い事ありますか?
0494NAME IS NULL
垢版 |
2017/10/18(水) 23:00:33.28ID:???
病気が治って彼女が出来て宝くじに当たって出世しまくるなどいい事ずくめ
0495NAME IS NULL
垢版 |
2017/10/21(土) 12:57:32.75ID:???
Queryのウインドウでは、色付きで分かり易くクエリが表示出来ますよね。
コピペしてワードなどに貼り付けるとその色情報が失われますが、
どうにかして文字だけでなく色もコピペできませんか?
0496NAME IS NULL
垢版 |
2017/10/21(土) 13:11:28.80ID:???
>>495
文法読み取って色表示しているのがクエリエディタの機能だから無理じゃね
0497NAME IS NULL
垢版 |
2017/10/21(土) 14:17:38.53ID:???
>>495
同じ機能を持ったテキストエディタに張り付ければいいじゃん
0498NAME IS NULL
垢版 |
2017/10/21(土) 17:12:43.60ID:???
例えば社員テーブルに複数の社員のデータを一気に追加する場合に
社員番号をキーとして、
もしテーブルに該当社員がいればUpdate、
いない場合はInsertしたいのですが、
そう言う処理を簡単にやるコマンドはありますか?
0501NAME IS NULL
垢版 |
2017/10/21(土) 17:57:32.74ID:???
ありがとうございました。
0502NAME IS NULL
垢版 |
2017/10/21(土) 21:16:04.76ID:???
>>495
「形式を選択して貼り付け」じゃないの?
rich text formatでクリップボードにはコピーされてるはず
0503名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 07:09:30.09ID:???
その後、mergeをいろいろ試しています。
社員更新データを#で始まるローカル一時テーブルに入れておいて、
社員テーブルにマージする方針で出来たのですが、そのやり方で良いでしょうか?
調べていると、Temporal tablesと言うのもあるようですが今回のマージ処理に使うと何か良い事ありますか?
0508名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2017/10/22(日) 14:58:58.59ID:???
>>503
名前紛らわしいけど
temporary tableとtemporal tableは全く別物

テンポラリテーブルは一時テーブル
テンポラルテーブルは決まった日本語訳ないけど”時間テーブル”みたいな意味
バージョン管理や履歴管理のために使う
0510NAME IS NULL
垢版 |
2017/10/22(日) 21:45:55.65ID:???
>>506
テーブルに入れずにmergeできる?
0513NAME IS NULL
垢版 |
2017/10/22(日) 23:17:00.45ID:???
>>512
マニュアル読めよ
ダメな子だな
0514NAME IS NULL
垢版 |
2017/10/23(月) 12:22:06.75ID:???
他は知らんがSQLServerのmergeはただの場合分けでupdateとinsert書いてるだけなんだから
updateとinsertに書けることは大体書ける
0516NAME IS NULL
垢版 |
2017/10/23(月) 15:13:53.67ID:???
>>515
マニュアルに例も含めてまんま書いてるのにそれすら読めないのか?
仕事でデータベースさわってるなら今すぐ辞めろ
みんなが迷惑する
0517NAME IS NULL
垢版 |
2017/10/23(月) 15:27:52.10ID:???
505辺りから質問者とは別の人だろ
0518NAME IS NULL
垢版 |
2017/10/23(月) 15:28:32.51ID:CzSV0ugc
普通のワークテーブルも作ったらいけない決まりがあるのか?
0519NAME IS NULL
垢版 |
2017/10/23(月) 21:08:58.07ID:???
>>516
具体的に書けないなら黙ってろよ
マジでウザイわ
■ このスレッドは過去ログ倉庫に格納されています

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