Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net

1NAME IS NULL2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

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

過去スレとかめんどいから誰か適当に貼って

2NAME IS NULL2016/05/29(日) 17:26:44.26ID:???
・過去スレ

Microsoft SQL Server 総合スレ 10
http://echo.2ch.net/test/read.cgi/db/1385363382/

Microsoft SQL Server 総合スレ 10(レス数6で落ち)
http://toro.2ch.net/test/read.cgi/db/1371907307/

Microsoft SQL Server 総合スレ 9
http://toro.2ch.net/test/read.cgi/db/1310645522/

Microsoft SQL Server 総合スレ 8
http://hibari.2ch.net/test/read.cgi/db/1259409678/

Microsoft SQL Server 総合スレ 7
http://pc11.2ch.net/test/read.cgi/db/1231665917/

Microsoft SQL Server 総合スレ 6
http://pc11.2ch.net/test/read.cgi/db/1207377114/

Microsoft SQL Server 総合スレ 5
http://pc11.2ch.net/test/read.cgi/db/1175091880/

Microsoft SQL Server 総合スレ 4
http://pc11.2ch.net/test/read.cgi/db/1142315583/

Microsoft SQL Server 総合スレ3【MS SQL】
http://pc11.2ch.net/test/read.cgi/db/1123981539/

MS SQL Server 総合スレ2
http://pc11.2ch.net/test/read.cgi/db/1093012583/

3NAME IS NULL2016/05/29(日) 23:40:39.48ID:???
おつ

4NAME IS NULL2016/05/30(月) 02:56:20.37ID:bu03jhsY
日本マイクロソフト人事本部シニアマネージャー(名ばかり管理職)の西川昌邦(さいかわまさくに)は犯罪者にして殺人犯だ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!! その結果人が死んだ!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。命が惜しければ間違った判断をなされないことを期待します」
と発言するのと同じレベルだ!!
しかもそれを注意してやったら、「世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
メール:masaikaw●microsoft.com
(●を@に置き換えて)
電話:09025411718

5NAME IS NULL2016/05/30(月) 03:37:26.75ID:???
こういう異常者を切る眼力を持つ物が人事をやってる
さすがMSw

6NAME IS NULL2016/06/02(木) 14:04:22.59ID:???
せっかくなのでVS2015スレから転載

201 名前:デフォルトの名無しさん [sage] :2016/06/02(木) 04:43:03.97 ID:FKKiP5go
>>194
公開されたぞ

SQL Server 2016 Developer (x64) - DVD (Japanese)

リリース日: 2016/6/1
ファイル名: ja_sql_server_2016_developer_x64_dvd_8778351.iso
言語: Japanese
SHA1: 3FACA4CB652E6209376B3843274C573E8161659B

7NAME IS NULL2016/06/03(金) 09:13:02.76ID:???
SQL Server Management Studioは間に合わなかったの?
preview版(英語)をダウンロードするようになってるんだが

8NAME IS NULL2016/06/04(土) 00:55:23.99ID:???
ssmsで完全バックアップを取りたいのですが保存先がサーバ側(リモート)ディレクトリしか指定できないようです
リモートに保存したあとコピーするなどではなく、直接ローカルに保存したいのですが可能でしょうか?

9NAME IS NULL2016/06/04(土) 03:00:44.85ID:???
>>8
DBMSの話で普通、ローカルとかリモートとかってのはサーバ(DB)側からみての話だと思うが

BACKUP DATABASE コマンドでUNCパスが指定できるから、ネットワーク共有ファイルに保存はできるはず
ただし、サーバサービスを動かしてるアカウントに権限が必要だが

10NAME IS NULL2016/06/04(土) 05:02:11.59ID:???
>>9
ありがとうございます
ネットワーク共有以外の方法は無いでしょうか?
例えばdb単位でdumpした奴をクライアント側(ssms)に保存するような機能は無いでしょうか
スクリプト生成も試したのですが互換性がどうのこうのと言われ使い物にならなかったです
bcpはスキーマを取れないようだし

11NAME IS NULL2016/06/04(土) 16:33:35.30ID:???
>>10
バックアップデータがネットワークを介さずにクライアント端末に瞬間移動する機能を期待しているの?

12NAME IS NULL2016/06/04(土) 16:36:44.54ID:???
bcpにフォーマットファイル作成するオプションがあるが

13NAME IS NULL2016/06/04(土) 17:21:12.34ID:???
>>11
瞬間移動?
mysqldump的なことです

14NAME IS NULL2016/06/04(土) 22:31:57.05ID:???
>>13
サーバ上にあるデータベースのデータをクライアント側にバックアップしたい。でもネットワークは経由したくない。

って話じゃないの?

15NAME IS NULL2016/06/05(日) 00:12:16.34ID:???
>>14
>ネットワークは経由したくない
そんなこと言ってないです
>>9さんが言っているのはDB鯖にネットワークドライブをマウントさせてそのにバックアップを取ったら?と言っているんですよね
そうではなくmysqldumpのようにクライアント側にダイレクトにdumpさせたいので同等の機能はないんでしょうかと訪ねているのです

16NAME IS NULL2016/06/05(日) 01:16:00.90ID:???
>>15
UNCで指定っていってるんだから、ネットワークドライブとしてマウントする必要ないでしょ。

CIFS使うことがいやな理由は?

17NAME IS NULL2016/06/05(日) 01:28:17.97ID:???
設定が分からないとか面倒とかでは。。

SSMS を動かしているクライアント上に、SSMS が直接バックアップファイルを作成できるか?
ってことなら 不可 でいいんだよね?

18NAME IS NULL2016/06/05(日) 01:36:16.56ID:???
>>16
失礼
会社の鯖なんで共有の設定できないです
>>17
>設定が分からないとか面倒とかでは。。
会社の鯖なんで弄れないです
やっぱ無理なんすね
ダメだなsqlserver

19NAME IS NULL2016/06/05(日) 01:44:06.11ID:???
>>18
共有の設定するのはクライアント(端末)側でしょ?

20NAME IS NULL2016/06/05(日) 01:47:06.28ID:???
>>19
そうなんですか!
windows無知すぎて恥ずかしい…
ありがとうございます!

21NAME IS NULL2016/06/05(日) 03:14:58.13ID:???
そもそもバックアップはDB管理者のタスクで、一般ユーザーのタスクじゃないから

クライアント側にデータ吐きたいだけならBCPで良いだろ
サーバの設定変えられんとか、アカウント変更できんとネットワーク共有使えん可能性が高いんだが

22NAME IS NULL2016/06/05(日) 03:49:38.85ID:???
>>21
私はDBAではないです
bcpはddl吐けないですよね?
データのコピーならbcpで十分なのはわかってます

23NAME IS NULL2016/06/05(日) 14:14:34.93ID:???
そもそもなんのためにそんなことしようとしてるんだろう。

24NAME IS NULL2016/06/05(日) 17:20:39.46ID:???
ddlは吐かないがレイアウト定義は出力できる
ddlを吐いても、一般ユーザーにテーブル作成する権限があるとは限らんし

ホント、なんのためにddl付きのデータが欲しいんだ

25NAME IS NULL2016/06/05(日) 18:08:24.46ID:???
>>24
>ddlを吐いても、一般ユーザーにテーブル作成する権限があるとは限らんし
>ホント、なんのためにddl付きのデータが欲しいんだ

そこは気にしなくていいです
ただmysqldumpと同じ機能がないことにショック

26NAME IS NULL2016/06/05(日) 19:03:54.03ID:???
だからバックアップはDB管理者の仕事だって言ってるだろ
クライアントにバックアップ保存するようなコンセプトじゃないんだよ

27NAME IS NULL2016/06/05(日) 19:28:34.21ID:???
(不正アクセスを試みてるようにしか見えない件)

28NAME IS NULL2016/06/05(日) 21:34:55.90ID:???
>>8
無理です
SQL-Server にはそう言う機能がないので MySQL でも使ってて下さい

で、終了でしょ

29NAME IS NULL2016/06/06(月) 10:14:44.31ID:???
>>28
yes

30NAME IS NULL2016/06/11(土) 01:01:56.36ID:???
バックアップは、というか基本的に全てのSQLはSQLServer上で動いてるから、SQLServerのプロセスの実行アカウントがアクセス出来る場所にしかアクセスできない
sqlcmdやbcpなんかのユーティリティでクライアントにデータ持ってきてるのは、結果セットをユーティリティがネットワーク経由してくれてるだけ、
バックアップファイルは結果セットじゃないんで無理

という認識でいる。あってるかどうかは知らない
mysqlは
SQLServerサービスの実行アカウントがNetworkServiceかDomainAdminsのユーザならUNCでいけるかな?

インメモリのテーブルにレプリケーションのハブリッシュテーブル指定できないとか対応しとけよMSのあほー
使えそうと思ったのに

31NAME IS NULL2016/06/11(土) 05:32:54.64ID:???
>>30
> という認識でいる。
終わった話題に間違ったこと書くアホ w

32NAME IS NULL2016/06/11(土) 06:03:14.50ID:bjKxFQNF
SQL server2012について、
コンピュータ名の変更が必要となっています。
すでにセットアップ済み、実行中のものなんですが、
コンピュータ名の変更を行うとSQL serverにログインできなくると見聞きしています。

msdnには以下のように書いており、
https://msdn.microsoft.com/ja-jp/library/ms143799(v=sql.110).aspx

まだ試してはいないのですが、他に必要な作業というのはあるのでしょうか?
また、ログインできなくる原因というのはSQL serverが管理している情報で、旧コンピュータ名のものがあるからという認識なのですが、それがどれほどあるかがわかりません。

33NAME IS NULL2016/06/11(土) 18:17:16.27ID:???
>ログインできなくる原因というのはSQL serverが管理している情報で、旧コンピュータ名のものがあるから
接続できなくなる理由はほとんどクライアント側だと思うが
すくなくともDBサーバー側ではそこに書いてある通りだろ
あとはBrowserとかリスナとかのサーバ側でもネットワーク設定の問題か

34NAME IS NULL2016/06/11(土) 20:35:00.54ID:???
SQLServer の資格情報がホスト名付きでシステム系のテーブルに格納されてるから、それを変更しないと。
ってのならやった記憶がなくもないような。

詳細は全く覚えてない。すまん。

35NAME IS NULL2016/06/11(土) 22:24:07.06ID:???
windows認証のログイン、ユーザーがだめじゃ?

36NAME IS NULL2016/06/12(日) 02:48:28.60ID:YEbpLz0V
>>35
日本マイクロソフト人事本部シニアマネージャー(名ばかり管理職)の西川昌邦(さいかわまさくに)は犯罪者にして殺人犯だ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」
などと自殺教唆を公然と行った!! その結果人が死んだ!!
丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に
「いついつまでに金一億円をお振り込みください。命が惜しければ間違った判断をなされないことを期待します」
と発言するのと同じレベルだ!!
しかもそれを注意してやったら、「世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ
どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」
などとイカ様気取りも大概にしろという発言を行った!!
抗議先 日本マイクロソフト人事本部 西川昌邦
メール:masaikaw●microsoft.com
(●を@に置き換えて)
電話:09025411718

37NAME IS NULL2016/06/12(日) 10:21:57.95ID:???
>>33
ありがとうございます。
browserとはsql server browserの事を指しているのでしょうか?
sql server browserとなると正直触れたことも無いので…
sql server 2012上での作業は>>32のみということでしょうか?

あと、sqlに対して行うサーバー名の変更作業は、実際サーバー名を変更する前に行った方が良いのでしょう?
コマンドプロンプトからsqlcmdでも出来そうには思うのですが、リスク軽減的にどちらが良いのかもう一つ分かりません。
何度も質問してすみません。

38NAME IS NULL2016/06/12(日) 22:13:07.91ID:???
リスク軽減なら、ぶっ壊れても最悪再インストールすればいい検証環境で手順確立するのが一番
システムDBのバックアップリストアや再作製のやり方も練習する
システムの構築手順を確認する、最悪の場合に備えて再構築するための時間を確保する

かなあ。
express落とすか、developerかmsdnあるならそれつかって自分のPCで試してみればいい。
システム構成もホスト名変更する背景もわからんから具体的なアドバイス難しい

39NAME IS NULL2016/06/13(月) 07:34:56.62ID:???
サーバー名の変更だけならそれで良いはず
規定のインスタンス使ってない場合はよくわからない
Windows人称でないなら問題も出なさそう

40NAME IS NULL2016/06/14(火) 11:06:11.28ID:nfKm+RL8
DBのバッチ系の処理がおそいおそいと文句言われる
HDをSSDに替えてアッと言わせてやろうと思うけど効果ありますか?
ちなみにSQLServer2008無印
現在の構成はRAID5でログのみミラーリング

41NAME IS NULL2016/06/14(火) 11:28:04.69ID:???
効果ありそうだけどSSDの損耗が早くてアッと言われそう

42NAME IS NULL2016/06/14(火) 11:42:31.63ID:???
>>40
バッチ処理をどう実装しているかによる。
単発クエリを10万回ループとかだったら、SSDに変えてもほぼ無力。

43NAME IS NULL2016/06/14(火) 12:31:42.51ID:???
>>40
効果的なチューニングにはウイークポイントの調査が必要です。
複数あるバッチのどれが長時間かかるのか、バッチのSQLのうち長時間かかるのはどれか(1回の時間x回数)

SQLがわかったら実行プランを取得してテーブルスキャンしてる項目を確認する。またOSのパフォーマンスモニタで書き込み、読み込みの状態を調べる。

サーバのハードウェアRAID書き込みキャッシュがON(ライトバック)になっているかも確認する(シスコのやつはバッテリー付きモデルなのに標準がOFFだった。)

44NAME IS NULL2016/06/14(火) 12:32:58.70ID:???
エンタープライズを使っている場合はテーブルの圧縮を行うのも有効です。
ほとんど欠点なく、スループットが上がります。

45NAME IS NULL2016/06/14(火) 18:01:50.33ID:???
>>41
いつの時代だよ

46NAME IS NULL2016/06/14(火) 18:09:47.00ID:???

47402016/06/14(火) 19:47:31.92ID:nfKm+RL8
みなさん、ありがとん!

バッチは毎日、毎時とそれぞれ数千〜数万件をBCPやインポート機能+カーソル処理でおこないますから
かきこみ相当あるかも(汗)

一応、定期のメンテプランは実行していて圧縮、再構成等マメにやっています。ハードウェアRAID書き込みキャッシュがONもかくにんしよ、


印メモリは予算的にむりだし2008がサポート切れまでこき使ってやるつもり。

48NAME IS NULL2016/06/14(火) 21:14:21.36ID:???
bcp等で巨大なデータを書き込む際にキー有りテーブルに書くのではなく、キーなしに書いて後からキーをつけた方が早くなります。
ただ、一時的にテーブルサイズが倍になる(alter tableすると内部でテーブルがコピーされるから)弊害がでます。

うちではbcpに6時間かかってたやつが3時間になったよ

49NAME IS NULL2016/06/14(火) 21:51:18.49ID:???
処理の仕方にもよるけど、cpuのクロック高いのにするとか
うちが扱ってる製品がそうで、10コアoverとかようつかわん
E7-4000番台に3Ghz超える4、6コアのcpu欲しい
インテルさんお願い

50NAME IS NULL2016/06/15(水) 03:10:15.39ID:???
ネックがどこにあるかわからんのにどうこう言ってもなぁ

51NAME IS NULL2016/06/15(水) 10:25:45.59ID:???
>>47
> バッチは毎日、毎時とそれぞれ数千〜数万件をBCPやインポート機能+カーソル処理でおこないますから
> かきこみ相当あるかも(汗)
それは、コードがボトルネックだな
ハードウェアを増強しても、5分が4分とかになるくらいだろ
コードを書き直せば、5分が30秒とかになるだろうな

52NAME IS NULL2016/06/15(水) 11:19:21.43ID:???
1回のinsert or update or deleteが20msくらい×5万回=1,000秒=16分ちょい
とかになってるのかな

53NAME IS NULL2016/06/24(金) 18:37:55.65ID:???
sql server 2014 expressで
nvarchar(100)のカラムにハングル文字を書いて読み取ったら文字化けしました。
Server Management Studioで確認しても文字化けして
????と成ってます。
ネット情報では文字列の前にNプレフィックスを付ける必要があるとの事ですが、
そういう作業をせずに、DBの既定の言語をUTF-8に設定するみたいなのは出来ないのでしょうか?
既定の言語はSJISらしいですが、本当でしょうか?

54NAME IS NULL2016/06/24(金) 19:05:09.27ID:???
言語と文字コードは別物なんだが

55NAME IS NULL2016/06/24(金) 19:47:40.07ID:???
そもそもOSの言語が何で、サーバ/クライアントの言語が何かわからんが

nvarcharに対する文字列は基本的にはNプレフィックス付けるべき
付けないとおそらく照合順序に従って変換されてると思われる
(どのレベルでの照合順序が使われてるかは知らん)

データベースの既定の照合順序はALTER DATABASEで変えられるけど
データベース作り直す方が良いと思うぞ

56NAME IS NULL2016/06/24(金) 22:04:59.14ID:???
>>55
とりあえず全部のカラムにNを付けたら解決しました。
nvarchar型以外のカラムにもNを付けたのですが問題ありますか?
試した限りでは問題なさそうなのですが。
Win7とWindows Server 2012R2です。

57NAME IS NULL2016/06/28(火) 20:13:35.33ID:???
Windows Updateを最新にした状態で2016をインストールしようとしたら「最小要件を満たしていない」と蹴られたのだが理由が分からない。
スペックが足らない訳でもないし、.Net Flamework 4.6.1はインストール済みなのに。。。

環境は以下のとおりです。Cドライブの空き容量は99GBです。

OS:Windows7 Professional x64
CPU:Intel Xeon E3-1241 v3 @ 3.50GHz
CPUクーラー:ETS-T40F-W
マザーボード:ASUS H97 PLUS
メモリ:ADATA AD3U1600W8G11-2 8GB×4
SSD(Cドライブ):Plextor PX-256M5S 256GB
SSD(キャッシュ):64GB
HDD:WD20EARS×2
VGA:NVIDIA GeForce GTX 660

58NAME IS NULL2016/06/28(火) 21:55:27.98ID:???
MSDN見てみたらWindows7が要件から抜けてるぞ
ms143506

59NAME IS NULL2016/06/29(水) 00:04:24.72ID:???
>>58
Oh・・・マジか。見つけられなかったよ、そうかWindows7は対象外か。大人しく2014インストールするよ。

60NAME IS NULL2016/06/29(水) 01:00:35.80ID:???
>>57
速そうなマシンだな

61NAME IS NULL2016/07/14(木) 19:37:36.25ID:???
SqlServer2014ExpressSP1の64bitを使っていて、
サービスの自動起動がされるときと、されないときがあるんですが、何かわかりますか?

手動で開始、停止を繰り返しても特に問題は起きず、
自動起動しなかったときに手動起動を行うことも問題なく出来ます。
サービスの自動遅延開始など試してみましたが、効果はありませんでした。
OSはWindows7ProfessionalのSP1です。

62NAME IS NULL2016/07/14(木) 19:54:43.49ID:???
エラーログやOSのイベントログぐらい確認できないのかよ

63NAME IS NULL2016/07/14(木) 20:08:25.71ID:???
>>62
SqlServerのエラーログには何も吐き出されてなかったのですが、
OSのイベントログは見ていませんでした。そちらから調べてみます。

64NAME IS NULL2016/07/14(木) 20:44:06.60ID:???
SQL Server (MSSQLSERVER) サービスの接続を待機中にタイムアウト (30000 ミリ秒) になりました。
と出力されていたので、タイムアウトの時間を60000ミリ秒に設定してみました。
これで発生しなくなるかはまだわかりませんが、しばらく様子を見てみます。

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

65NAME IS NULL2016/07/15(金) 15:38:03.93ID:???
そもそも30秒で起動できないような環境が正しいか検証するべきじゃね

66NAME IS NULL2016/07/19(火) 20:15:06.96ID:???
2014 management studioで
TRUNCATE TABLE
でデータを削除してしまったのだが、UNDOは出来るの?
至急おしえてくれ。

67NAME IS NULL2016/07/19(火) 21:07:50.03ID:???
UNDOが何の事を指してるか分かりませんが、できません
バックアップから回復して下さい

68NAME IS NULL2016/07/19(火) 21:53:59.19ID:???
>>67
バックアップはどこにある?
自動バックアップがあるの?

69NAME IS NULL2016/07/19(火) 22:54:30.26ID:???
自分でバックアップを取ってないなら諦めてください

70NAME IS NULL2016/07/19(火) 22:58:58.63ID:???
完全復旧モデルなら、今からバックアップ取って日時指定でリカバリできる気がする

71NAME IS NULL2016/07/19(火) 23:19:18.82ID:???
潔く諦めるか、そこだけ何故か震度7に襲われたことにするか、ついうっかり硫酸をこぼしてしまうか 天狗の仕業にするか  様々な手はある
もしくはこれから徹夜で手入力し続けて、明朝やつれきってゲッソリした顔で上司を迎えて同情を買うか
まぁ、買ってはくれないだろうけれども  楽になりたいなら、びっくりするほどユートピア!を社員の前でお披露目するしかないだろうことは想像に難くない

72NAME IS NULL2016/07/20(水) 05:46:49.52ID:???
>>完全復旧モデル
何よそれ。

73NAME IS NULL2016/07/27(水) 08:28:47.24ID:???
SQL Server 2012 SP3 をダウンロードしたいんだけどダウンロードセンターからダウンロードできない。

これだよねえ。
https://www.microsoft.com/ja-jp/download/details.aspx?id=49996
言語を選んでダウンロードボタンを押すと

ダウンロードしていただき、ありがとうございます。
Microsoft SQL Server 2012 Service Pack 3 (SP3)
インストール方法
以下略…

となってなにも起こらないです。
IEでもFireFoxでも同じです。
どうしたらいいす??

と、Chromeで試しながら書いていたらChromeではダウンロードファイルの選択ダイアログが出て、
ダウンロード開始することができた。ロサキネンシス!

74NAME IS NULL2016/07/30(土) 13:19:55.39ID:yq4MDUYW
sqlserverからaccessのデータへ接続したいのですが
以下のページを参考にすると

http://sqltips.blog40.fc2.com/blog-entry-11.html

「Microsoft Jet 4.0 OLE DB Provider」というものが必要みたいなんですが
私のsqlserverには表示されていません。
どこかで手に入れてインストールしておく必要があるんでしょうか?
どなたか教えてください

75NAME IS NULL2016/07/30(土) 13:27:13.61ID:???
SQL鯖がx64だったら無理と思う

76NAME IS NULL2016/07/30(土) 13:40:24.20ID:yq4MDUYW
>>75
やっぱりそうなんですね
何とかaccessからデータ抽出する方法ってないでしょうか?
32bit版のsqlserverをインストールすればいけますか?

77NAME IS NULL2016/07/30(土) 14:23:20.08ID:???
Access側にSQL鯖へのリンク張って、そこで転送するとか

78NAME IS NULL2016/07/30(土) 15:31:32.98ID:???
>>74
64ビット版のODBCドライバ経由すれば良いんでない?

79NAME IS NULL2016/07/30(土) 16:06:54.30ID:???
Jet OLEDBは古い
ACE.OLEDBってのがあって、これは64ビット版もある
たぶんそれでできるだろうけど、ACEってサーバ側での使用は想定も許諾もされてない気がする

accessからSQLServerにリンクテーブル張るのが楽な王道じゃないかな

80NAME IS NULL2016/07/30(土) 18:47:00.13ID:???
リンク貼る時何選べばよかとよ?
native clientとか分からん選択肢が一杯出て来るけん

81NAME IS NULL2016/09/06(火) 09:56:12.52ID:???
SSMS2016でATOKが使えないんだが・・・
Win7x86

82NAME IS NULL2016/09/07(水) 15:49:03.33ID:???
アプリの表示件数と実データの件数が合わないらしいから調べろと言われ
指示されたテーブルのフィールドを見たら泣きたくなった

だって、マスタキーがカンマ区切りで格納されてるんだもの orz

自分で関数作るか解析専用の外部スクリプト作るしかないのか?

83NAME IS NULL2016/09/09(金) 03:01:08.50ID:???
>>82
ちょっと思ったんだが、CSV型みたいなCLRのユーザ定義型を自分で作ってみるとかどうだろう

84NAME IS NULL2016/09/09(金) 10:59:36.31ID:???
>>81
ssmsでatokが使えないってどういう意味よ?

85NAME IS NULL2016/10/07(金) 16:24:10.12ID:???
SQLを発行してテーブルのデータを読み込む場合、
結果をDataTableに一気に読み込むのと、
SqlDataReaderを使って 
while (dr.Read()){
 ... 
}
のようにループで一個ずつ取り出すのとで、どっちが良いとかありますか?

86NAME IS NULL2016/10/07(金) 21:57:05.54ID:???
>>85
まず読み込む件数によると思うが

87NAME IS NULL2016/10/08(土) 02:21:43.32ID:???
>>86
数件〜数万件くらいです。状況によって変わります。

88NAME IS NULL2016/10/08(土) 05:22:55.16ID:???
>>87
上限が数万なら一気読みでいいかと
将来的にもっと増えるかもならループかな

89NAME IS NULL2016/10/08(土) 06:31:28.05ID:???
>>88
数が増えるとループのほうが良いのですか?
なぜですか?

90NAME IS NULL2016/10/19(水) 17:17:06.51ID:???
MySQLのREPLACE INTOに相当するコマンドはありますか?

91NAME IS NULL2016/10/21(金) 18:43:10.14ID:9/r7lXFV
すみません、ご教示ください。
応研の給与大臣を使用していて、カスタマーサポートの指示に従いデータを復旧していたのですが、
以下の互換性コンポーネントをインストールするようダイアログが出ました。


Microsoft SQL Server 2005 の旧バージョンとの互換性コンポーネント
対象 : カスタマ、パートナー、開発者

X86 パッケージ (SQLServer2005_BC.msi) - 11258 KB
X64 パッケージ (SQLServer2005_BC_x64.msi) - 18552 KB
IA64 パッケージ (SQLServer2005_BC_ia64.msi) - 23490 KB

当方の環境がWindows10 64bitなのですが、どのパッケージをインストールすれば良いのでしょうか?
単純にX86 パッケージで良いものかわからなかったもので。

92NAME IS NULL2016/10/21(金) 19:31:32.02ID:???
>>91
ベンダーなりメーカーなりに聞けよ

93NAME IS NULL2016/10/22(土) 10:43:18.11ID:???
>>90
無い。mysqlの方が進んでいる

94NAME IS NULL2016/10/23(日) 02:01:53.42ID:???
mergeで全項目上書きでいいんじゃね

そもそもdeleteしてinserすれば良いだけで
ちゃんとしたトランザクションをサポートするDBMSでreplaceの必要性がわからんが

95NAME IS NULL2016/10/24(月) 02:54:50.86ID:???
生SQLだと0秒なのに、ストアド内に書くと35秒とか、
似たような悩みはググるといっぱい出てくるんだけど、どれ見ても解決してない様子

「推定実行プランの表示」ってダメ元で見てみたら、
ストアド版だけインデックス貼れって警告があって貼ったら直った

全く同じ内容なのに実行プランが違うわけないじゃん
もしかして有償サポート増やすために仕組んでる?

96NAME IS NULL2016/10/24(月) 03:10:48.55ID:???
mysqlやpostgreはいくら便利な命令があっても、スピードが遅いから単純なことにしか使えない
しかしまあ、t-sqlはお硬いやね
お硬いから速いのかもしれんが
GREATEST、LEASTぐらいは付けてもいいような

97NAME IS NULL2016/10/24(月) 03:29:06.99ID:???
SQLが同じでも実行計画が同じになるとは限らん
ストアドの実行計画は実行時に決定されるとは限らん

インデックス追加したということは、生SQLの方はインデックスを使ってないのに早かったのか
生SQLで使われてたインデックスがストアドでは使われてなかったのか

この程度の判断が自分でできないなら素直にどっかの業者に頼んだほうがいいんじゃね

98NAME IS NULL2016/10/24(月) 03:31:07.95ID:???
>>97
全く同一の内容だと言ってるだろ頭悪いな

99NAME IS NULL2016/10/24(月) 03:33:38.93ID:???
>>97
しかも自分で直ったと書いてあるだろ馬鹿

100NAME IS NULL2016/10/24(月) 03:35:16.10ID:???
ていうか俺自身が方々で数十倍〜数百倍にスピードアップさせてきた業者だからw

101NAME IS NULL2016/10/24(月) 03:47:25.19ID:???
>>98
生SQLとストアドって言ってるんだけど、何が全く同一なのか?

推定実行計画は必ずしも実際の実行計画なわけじゃないぞ

ストアド内の個々のSQLの、実際の実行計画って簡単には確認できなかった気がするなぁ
だれか簡単なやり方しってる?

102NAME IS NULL2016/10/24(月) 03:53:11.18ID:???
何が問題だったかわからんけど、とりあえず不要かもしれんインデックス追加して直りましたってか
パフォーマンスチューニングやる業者のレベルとしては信じられんな

103NAME IS NULL2016/10/24(月) 05:57:49.84ID:???
>>94
>replaceの必要性がわからんが
deleteしてinsertを一つのコマンドで実行したいからじゃねえ?

104NAME IS NULL2016/10/24(月) 07:59:00.21ID:???
文字列型のカラムで
2016/10/24 12:34:56
2016/1/2 2:3:5
のように桁がバラバラなのですが、それを
2016/10/24 12:34:56
2016/01/02 02:03:05
のように
YYYY/MM/DD HH:MM:SS
に揃えるSQL文を教えてください。

105NAME IS NULL2016/10/24(月) 09:01:09.32ID:???
>>101
dm_exec_query_statsにある情報でいいんかな
dm_exec_query_plan、dm_exec_sql_text組み合わせてステートメント単位でとってこれるよ
カーソルオープンは厳しかったと思うけど

生SQLが早いってことは検索条件に変数使ってるとかかね
分布が特異な偏りしてるインデックスをストアドで使うなら、with recompileつけるのが推奨だったと思う
ヒント文つけてもいいけど

106NAME IS NULL2016/10/24(月) 20:28:53.01ID:???
>>104
一旦日付型にCASTしてからフォーマット
つか特殊な要件が無ければ、DB上は日付型で保持してホストアプリ上で表示変換させた方が良いぞ

>>105
>dm_exec_query_plan、dm_exec_sql_text組み合わせ
それ見ても、どのプロシジャなのか探すのが大変だからなぁ

107NAME IS NULL2016/10/24(月) 21:24:42.51ID:???
>>106
>104
日付を文字列で保管するとどういうデメリットがありますか?

108NAME IS NULL2016/10/24(月) 21:34:11.43ID:???
>>106
dbidとobjectidで引っ張ってくればいいじゃない
うちはバックアップとかみたく自動で定期的にとるよう運用に乗っけてるよ
リリースして遅くなったなんてときにかなり重宝する

109NAME IS NULL2016/10/24(月) 21:39:15.61ID:???
>>107
orderbyとかwhere条件が大変
変換噛ましてやれないことはないが、そのぶんだけおそくなる
それにデータサイズも文字型のほうが大きくなる

110NAME IS NULL2016/10/24(月) 21:42:26.11ID:???
>>109
なるほど。
でも日付型は1750年以降くらいしか保持できないそうですが、それで
問題は出ないのですか?

111NAME IS NULL2016/10/24(月) 21:49:30.87ID:???
>>107
文字列で持ってたら、日付計算どうすんだよ

>>110
日付型って言っても色々あるから
dateかdatetime2使え

112NAME IS NULL2016/10/24(月) 21:52:59.93ID:???
>>111
>日付計算
このデータに関しては日付の計算をする予定はありません。
>dateかdatetime2使え
紀元前を扱うにはどうするのでしょうか?

113NAME IS NULL2016/10/24(月) 21:53:23.57ID:???
>>110
要件定義次第
だがまずない

114NAME IS NULL2016/10/24(月) 21:54:49.77ID:???
>>112
後はどういった要件があるのかな?

115NAME IS NULL2016/10/24(月) 22:00:16.76ID:???
>>114
ありません。

116NAME IS NULL2016/10/24(月) 22:07:49.71ID:???
>>115
どういった目的で紀元前を扱いたい?
扱うとは具体的にどういった処理をする?

117NAME IS NULL2016/10/24(月) 22:31:02.56ID:???
>>116
紀元前を扱う目的はその年代の年月日をデータで保管したいから。
日付の計算はしない。
それだけ。

118NAME IS NULL2016/10/24(月) 22:34:19.37ID:???
>>117
なら文字型が無難。

119NAME IS NULL2016/10/26(水) 00:41:26.43ID:???
てきとーにアンインストールしたら次から全然インストールできんくなった...助けて

120NAME IS NULL2016/10/26(水) 01:21:01.81ID:???
インストールログみて止まってるとこでググる
システムの復元でアンインストール前に戻す
OSから入れ直す
なにも情報ないからこれくらいしか言えない

121NAME IS NULL2016/10/26(水) 12:44:47.05ID:???
ットアップが失敗しました。
クリーンアップが必要ですってポップアップがでてきます..

122NAME IS NULL2016/10/28(金) 08:12:24.68ID:???
なんとか、再インストールできやした。あざした。

123NAME IS NULL2016/10/31(月) 14:07:37.12ID:???
sql serverとmysqlとで同じテーブルを同期させるなんて出来ますか?
sql serverの本データをmysqlにコピーする感じで。

124NAME IS NULL2016/11/03(木) 07:25:24.79ID:???
>>123
MySQLへリンクサーバー定義して、同期時に更新とかで出来そうな気がする
同期どうするかは考えんとダメだけど

125NAME IS NULL2016/11/03(木) 10:12:13.06ID:???
>>124
sql serverからmysqlへの一方通行のコピーなら簡単に出来るもんなの?

126NAME IS NULL2016/11/04(金) 05:38:06.52ID:???
リンクサーバ定義すれば、SQLServerからはローカルテーブルとほぼ同じように扱える

127NAME IS NULL2016/11/04(金) 16:29:37.52ID:???
>>126
ありがとうございました。
リンクサーバーでググってみます

128NAME IS NULL2016/11/07(月) 22:55:01.33ID:???
デフォルトだとdbo スキーマが使われますが、
実際の開発現場では、スキーマを何種類も作成して使い分けるなど
するのでしょうか?
dbo一個だけでテーブルを使い分ければそれで済む場合も多いと思いますが。

129NAME IS NULL2016/11/07(月) 23:26:03.19ID:eRnTZUaL
>>128
dboはスキーマではなくユーザー。

Oracleのようだと勘違いしてる?

130NAME IS NULL2016/11/08(火) 00:40:36.68ID:???
例えばここにdboはスキーマだと書いてありますが。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14142218604

131sage2016/11/08(火) 19:07:02.08ID:6hEpw8np

132NAME IS NULL2016/11/08(火) 23:19:02.99ID:???
今のSQLServerはDBユーザとスキーマが別なので、同じ名称のスキーマもユーザも存在するぞ

スキーマは使い分ける必要があればそうすればいいし
単一スキーマで問題なければ全部dboでもいいんじゃね

133NAME IS NULL2016/11/09(水) 00:28:18.37ID:???
>>129-130
> dboはスキーマではなくユーザー。
違うよ
https://msdn.microsoft.com/ja-jp/library/bb669061(v=vs.110).aspx

134NAME IS NULL2016/11/09(水) 09:53:38.05ID:???
>>132
>スキーマは使い分ける必要があればそうすればいいし
スキーマを分けるのは例えばどんな場合なん?

135NAME IS NULL2016/11/09(水) 19:50:50.41ID:???
>>134
テーブル更新できないスキーマ作ったりのセキュリティ要件とか

スキーマっていうよりユーザって言う方がしっくりくるんだけどな
まあどうせDBごとでユーザとスキーマは1対1だろうし
実際スキーマとユーザの違いはすっきり説明できん
単にワンクッション入ってるだけってイメージだ

136NAME IS NULL2016/11/09(水) 22:45:58.11ID:9dB+mYx1
>>133
本来はユーザーで所有者なんだよ。

スキーマという概念は後付け。

SQL Serverではユーザーとスキーマは別のくくり。

137NAME IS NULL2016/11/09(水) 23:03:36.67ID:???
そんなオレオレ定義を開陳されても困る

138NAME IS NULL2016/11/10(木) 18:02:32.23ID:0Mu12LBJ
私は元創価の会員でした。
すぐ隣に防衛省の背広組みの官舎があるのですが、
自分の家の窓にUSB接続のwebカムを貼り付けて、そこの動画を撮影し続け、
学会本部に送っていました。

別に大したものは写っていません。ゴミだしとか奥さんが子供を遊ばせている所とか。
官舎が老朽化して使われなくなってから、
今まで法人税(うちは自営業です)をほぼ払わなくても済んでいたのが、
もう守ってやれないのでこれからは満額申告するように言われました。
納得がいかないと言うと、君は自業自得で餓鬼地獄へ落ちる、
朝夕南無妙法蓮華経と三千回ずつ唱えて心をきれいにしなさいと言われ
馬鹿らしくなって脱会しました。

それ以来、どこへ行くにもぞろ目ナンバーの車につけまわされたり大変な日々です。
全部自分の出来心から起きたことで、どこに訴えるわけにもいかないのですが、
なんとかあの人たちと縁を切った上で新しい始まりを迎える方法はないんだろうか。

139NAME IS NULL2016/11/10(木) 22:12:44.11ID:???
まあ、SQLServerに限れば、昔はスキーマとDBユーザは同一だったから
>スキーマという概念は後付け。
と言えなくはないかもしれんが

>SQL Serverではユーザーとスキーマは別のくくり。
とどうつながるのか理解できん

140NAME IS NULL2016/11/11(金) 07:20:29.10ID:???
スキーマを正しく説明出来る人はここにはいないんですか?

141NAME IS NULL2016/11/11(金) 10:40:53.75ID:???
CitrixのXenAppのデータベースのぞいたら、サービスの単位でスキーマ分けてたな
ユーザはコンピュータアカウントだけででdb_owner
そんなやり方もあるんだなと感心した
うちは機能単位でなんてわけられないからdbo1個
リソースガバナー使う場合もあるからユーザは複数

142NAME IS NULL2016/11/11(金) 10:55:41.98ID:???
>>140
スキーマというのは、大抵のRDBMSで共通する概念ですね。
一つのデータベース内で論理的なグルーピングをするためのものです。

PostgreSQLのヘルプがわかりやすいので引用します。

> データベースには、複数の名前付きスキーマが含まれ、スキーマにはテーブルが含まれます。
> スキーマには、データ型、関数および演算子などの他の名前付きオブジェクトも含まれます。
> 同じオブジェクト名を異なるスキーマで使用しても矛盾は起こりません。

> スキーマの使用が好まれる理由はいくつかあります。
>
> ・1つのデータベースを多数のユーザが互いに干渉することなく使用できるようにするため。
> ・管理しやすくなるよう、データベースオブジェクトを論理グループに編成するため。
> ・サードパーティのアプリケーションを別々のスキーマに入れることにより、他のオブジェクトの名前と競合しないようにするため。
> ・スキーマは、ネストできないという点を除き、オペレーティングシステムのディレクトリと似ています。

143NAME IS NULL2016/11/11(金) 19:49:22.67ID:???
>>140
>>133 に URL 書いてあるのになぜ読まん

144NAME IS NULL2016/11/13(日) 01:56:32.48ID:ImZglz/9
SQL Serverは日本マイクロソフトのサポートがやる気ねえからな。

145NAME IS NULL2016/11/13(日) 17:11:33.05ID:???
日本MSはMSの名を借りた国内代理店だと思ってる

146NAME IS NULL2016/11/14(月) 10:03:43.16ID:???
Windows Server 2012R2 のWindows VPSでSQL Server Express 2016動かすには
メモリ2GBだと厳しいか?
IISも動かしている。

147NAME IS NULL2016/11/14(月) 19:09:41.20ID:???
Expressは使用メモリ1GBに制限されてなかったかな…
もちろん余裕があるに越したことはないけれども

148NAME IS NULL2016/11/15(火) 00:33:47.54ID:???
Committed bytesの適正値を考えると、メモリ2GBならIISとSQLserver合算で1GB未満、できれば600〜800MBくらいかなあ感覚だけど
IISとSQLserverで上限設定しときゃサーバーが不安定になるのは抑えられると思う
素直にメモリ増強するのが一番いいけどね

149NAME IS NULL2016/11/15(火) 23:39:28.97ID:???
>>147>>148
レスありがとうございました。
余裕をみて4GBくらいでVPS契約してみます。

150NAME IS NULL2016/11/16(水) 11:07:27.41ID:???
>>149
個人利用でやる分には2GBでもいいと思うよ
会社のパソコン(Windows7の32bit、メモリ2GB)にSQLserver Developer EditionとIIS入れてて普通に動作する
Officeとかも使うとやっぱきつくなるんで普段はサービス停止してるけどね

151NAME IS NULL2016/11/16(水) 12:40:26.64ID:???
質問です。

先日、知り合いの店でデータベースリストアが勝手に走ったのですが
何が原因なのか不明な状態です。下記が一部ログになります。

The database '*****'' is marked RESTORING and is in a state that does not allow recovery to be run.

分かる方いらした教えてください。

152NAME IS NULL2016/11/16(水) 20:11:15.42ID:???

153NAME IS NULL2016/11/17(木) 23:05:51.60ID:???
ある特定のテーブルで大量の件数をDeleteする時だけ
異常に時間がかかるんですが何故だかわかりますか?
ググってもイマイチ分からんです

Delete From TABLE Where PK<****
みたいな単純なやり方なんですが…

エスパーの方教えてください

154NAME IS NULL2016/11/18(金) 00:05:01.89ID:???
>>153
断片化が走りまくってるとか?
Insertするときもプライマリキー張ってると徐々に遅くなってくしそれかも
一回リビルドインデックスしてからやってみたら変わらんかなあ

sum関数でInt型の限界越えてオーバーフローしたんだが、実行プラン次第でオーバーフローしたりしなかったりするのは仕様?不具合?
2008r2から2014のsp2に移行しようとして本番データで動かしたらエラーなりやがった
MSに問い合わせる前にバグか仕様かのあたりつけときたい

155NAME IS NULL2016/11/18(金) 07:56:06.38ID:mgIvH7zu
>>153
SELECTするときも時間がかかってる?

156NAME IS NULL2016/11/18(金) 08:03:38.07ID:???
あとでrollbackされたときに備えて、delete予定データをいったんtempに吐いてるから
データ数が多いと死ぬほど遅い

生かすデータだけ別テーブルに吐いてtruncate tableして別テーブルをリネームしたほうが早い場合もある

157NAME IS NULL2016/11/18(金) 08:05:35.18ID:???
リレーション絡んでると無理だけど

158NAME IS NULL2016/11/18(金) 08:14:49.18ID:mgIvH7zu
>>156
そんな初心者みたいなアドバイスするなよw

159NAME IS NULL2016/11/18(金) 11:56:10.77ID:???
>>158
待ってましたー、w

160NAME IS NULL2016/11/18(金) 12:53:12.29ID:???
>>156
1000万件中10万件だけ残したいとか
そういう時はそっちの方がいいよね
truncateは本当に爽快

161NAME IS NULL2016/11/18(金) 13:09:12.94ID:mgIvH7zu
初心者スレかよw

162NAME IS NULL2016/11/18(金) 13:35:15.03ID:???
だけど、>>156 以外に方法ないんだな、これが
あと、1回あたりのdelete数を減らしてやって(その分、何回も回して)
1トランザクションあたりのロックを多少なりとも緩和するか

163NAME IS NULL2016/11/18(金) 13:39:05.15ID:???
自分の場合、1億レコードが1000万件を退避させるとき
SET ROWCOUNT 指定して、小刻みに削除してる
(トランザクションログが一杯になるのを防止)

それでも平気で一晩とかかかるが

164NAME IS NULL2016/11/18(金) 13:41:35.56ID:mgIvH7zu
>>163
おまえの環境なんか知らねえよw

165NAME IS NULL2016/11/18(金) 13:48:32.20ID:???
じゃ具体的な打開策を示してみろよ

166NAME IS NULL2016/11/18(金) 18:52:28.15ID:???
・復旧モデルを完全から単純にする
・テーブルロックを明示して削除する
・クラスターインデックスをやめる
・インデックスをドロップしてから削除

全部やって遅いなら、ハードを速いのに変えろ

167NAME IS NULL2016/11/19(土) 10:21:04.31ID:???
具体的には何も言えないチキン ⇒ ID:mgIvH7zu

168NAME IS NULL2016/11/19(土) 10:29:48.42ID:???
パーティションテーブルにできるならそれにしちゃえば?
あれならパーティション単位にトランケート 出来るらしいが

169NAME IS NULL2016/11/19(土) 11:41:15.25ID:???
色々あるもんだね

170NAME IS NULL2016/11/19(土) 12:44:15.23ID:QTm9YLIS
>>167
質問した本人がいないからな。

171NAME IS NULL2016/11/19(土) 15:34:55.16ID:???
truncate table に where 書けたら解決なのにな
それか、delete に「Rollback不能で構いませんから速くやってください」って with 句を準備してくれるか

172NAME IS NULL2016/11/19(土) 21:17:15.83ID:???
ロールバック不能で良いっていっても、その文でのアトミックは保障しないとだめだからなぁ

173NAME IS NULL2016/11/19(土) 22:46:43.49ID:???
>>154
これの下の質問書いた者です
不具合ではなさそうなのがわかったのですがどうしたものかと質問です。

select 番号,sum(金額)
from テーブルA
inner join テーブルB on 〜
inner join テーブルC on 〜
inner join テーブルD on 〜
where 〜
group by 番号

これの実行プランがテーブルDとの内部結合前にgroup byとsumしててInt型の上限越えてしまいました
テーブルDとの内部結合を先にやってくれてたらそのデータが除外されて問題なかったのにっていう結果
whereとjoinとgroupby って優先順位特にないんでしたっけ
確実なエラー回避方法がBIGInt変換くらいしか思い付かない

174NAME IS NULL2016/11/19(土) 23:12:30.44ID:???
>>171
deleteも結局はページ単位の処理になるからね、消すだけじゃなくページ間のインデックスも保持しなきゃとかいろいろやってるから
全部いらないから細かいこと抜きでってできるtruncateのようにはいかないよ

175NAME IS NULL2016/11/20(日) 01:43:45.15ID:???
>>173
SQLは手続き型言語ではないので実行順序はオプティマイザが決めるってのが原則
ある程度はオプティマイザへの指示をクエリヒントって形で出せるけど

Dの結合を先にするようにサブクエリ書いてFORCE ORDER指定で行けるかもしれんが
そんなSQLは保守性わるいし、基本的にはどんな実行計画でもエラーにならんようにしろとしか

176NAME IS NULL2016/11/23(水) 10:58:15.12ID:???
>>163
1億レコードって物凄い大きなDBですか?
どんなシステムなのか見当もつかない

177NAME IS NULL2016/11/23(水) 15:31:19.70ID:RVwlvGQS
>>176
誰もが知ってる会社のシステムならその程度は珍しくもないけど。

178NAME IS NULL2016/11/23(水) 20:11:21.26ID:???
>>176
全然普通じゃん
どんな仕事してん?

179NAME IS NULL2016/11/23(水) 21:48:35.25ID:???
>>178
むしろお前にどんな仕事してるのかを聞きたいわ

180NAME IS NULL2016/11/24(木) 00:03:09.24ID:nZ9WujKe
スカート捲ってもらって股間の香り嗅ぎながらチンポ握ると五分で発射寸前だよ。
二十歳ぐらいの女の子のナマパンツに顔を埋めて拭き取り漏れのお尻の穴のリアルな香りを嗅いで好き放題シコる。
この状況で一時間持つ意味が分からん。

181NAME IS NULL2016/11/28(月) 14:13:26.04ID:???
更新しなくてSELECTだけのストアドがあります。
パラメータは3つです。

返ってくる行は30行程度で
クエリエディタから実行すると精々1〜2秒で戻ってきます。

クエリエディタでやってることと同様のものを
System.Data.SqlClient.SqlCommand で作って ExecuteReader してやるんですが
ExecuteReader が終わるまで15秒ほどかかります。
条件のよいとき(クエリエディタで1秒のもの)でも8〜9秒です。

いったい何が原因なのでしょうか。

182NAME IS NULL2016/11/28(月) 14:34:48.86ID:???
解決しました。

ALTER DATABASE データベース名 SET ARITHABORT ON
で算術アボートを有効にしてやったら、クエリエディタと同じになりました。

183NAME IS NULL2016/11/28(月) 14:56:49.87ID:???
ちょっと違ってました。

ALTER DATABASE データベース名 SET ARITHABORT ON
することで、クエリエディタと同じ速度になりましたが、
ADO.NET のときと同じ速度に、つまりは遅い方に揃ってしまいました。

ALTER DATABASE データベース名 SET ARITHABORT OFF
に戻したうえで、SqlCommand を投げるごとに
先に SET ARITHABORT OFF しておくと、早いクエリエディタと同じ速度になりました。

ゼロ割算の対策はしてあるつもりだし、むしろ NULL で進むよりエラーにしてもらったほうが嬉しいので
これはこれでいいのですが、全ての SqlCommand に埋め込まないといけないのか・・・

184NAME IS NULL2016/11/28(月) 15:26:31.97ID:???
>>181-182
テーブル変数とか使ってる?
実テーブルからだけのselectでも発生してる?

185NAME IS NULL2016/11/28(月) 15:54:51.04ID:???
テーブル変数を使ってたんですが、作業表(#〜)にしても一緒でした。
中身一緒かもしれませんが。

186NAME IS NULL2016/11/28(月) 16:07:15.48ID:???
>>185
テーブル変数つかうと、行数を正しく判定できないで遅いプラン作る事があるってのは聞いたことある
selectしてるとこにRECOMPILEヒント入れるとマシになるかも
当然リコンパイル分のパフォーマンス劣化はあるけど、遅いプランとどっちがマシか比べて

187NAME IS NULL2016/11/28(月) 16:19:19.41ID:???
ストアドの中のselect〜の末尾に option(RECOMPILE) 追加するんですよね?
試してみましたが、全く効果なく、事前の SET ARITHABORT ON を外すと元通り劇遅になりました。

ConnectionStringで SET ARITHABORT ON を指定できたらいいのですが。。。

188NAME IS NULL2016/11/28(月) 16:38:59.67ID:???
ARITHABORT OFFで遅い実行計画つくることがあるとはMSDNにも書かれてるけど
実際にそれが原因で問題のある実行計画作られたのは見た事ないなぁ
executeにWITH RECOMPILEつけても同じ?
これでダメなら、自分で適切なヒント付けてやればいいんだけど
そもそも実行計画の問題じゃない気もしなくはないな

189NAME IS NULL2016/11/28(月) 17:00:05.82ID:???
テーブルに単価のフィールドを持ってなくて、そのかわりに金額÷数量を単価とみなすビューを作ってあるんです
金額/nullif(数量,0) as 単価

それ利用してるもんだから、ゼロ割算の関係だとしたらビンゴなんですよ。

190NAME IS NULL2016/11/28(月) 17:12:45.91ID:???
以降は、君のブログで。

191NAME IS NULL2016/11/28(月) 17:20:38.36ID:???
SET NOCOUNT ON してる?
ほんとにSET ARITHABORT の問題なら、ストアドの中でSET ARITHABORT ON すれば良い

192NAME IS NULL2016/11/28(月) 17:30:39.39ID:???
>>191
SET NOCOUNT ON は基本やってます。
ストアドの中で SET ARITHABORT ON 明示してもいいんですか。

とりあえず今回気が付いたもの以外にも、気が付かないだけで潜在的に遅いものがありそうな気がしてまして
かつ、ストアドでなくソースの中でSQL吐いてるのもあって、
CreateCommand する直後で全て SET ARITHABORT ON したほうが良さそうな感じ。

http://www.sommarskog.se/query-plan-mysteries.html
が詳しいようです。

193NAME IS NULL2016/11/28(月) 17:32:01.75ID:???
いま注目してるストアドを相手にしたときは

SET ARITHABORT OFF で16秒
SET ARITHABORT ON  で2秒

くらいの違いがありました。
続けて何度か回しても結果は大差ないので、キャッシュの関係もなさそうだし・・・

194NAME IS NULL2016/11/28(月) 18:04:45.26ID:???
>>192
そこも、基本的にはオプションが違うと実行計画が違うよって話

実行計画うんぬん以前に、オプションで結果変わってるし
そのコードじゃゼロ割りの対策してないしw

キャッシュってのは、クエリプランのキャッシュのこと
データキャッシュとは別だから、何回回しても大差ないよ

195NAME IS NULL2016/11/28(月) 18:12:55.62ID:???
>>194
> そのコードじゃゼロ割りの対策してないしw
ど素人は黙っとけ

196NAME IS NULL2016/12/02(金) 13:29:12.92ID:???
col1  nvarchar(100)   Primary Key
col2  int  Primary Key, IDENTITY
con3  nvarchar(100)
の場合に
col1,col3の値を指定してinsertのつもりが、間違えてUpdateを実行したら
col1の値に等しい全ての行のcol1, col3が全部同じ値になってしまったのですが
そういうもんですか?

197NAME IS NULL2016/12/02(金) 15:28:09.53ID:???
どうやったらInsとupd間違うんだろう
where句なしで実行ってこと?
ORマッパーみたいなツールの話だろうか

198NAME IS NULL2016/12/02(金) 15:30:42.82ID:???
言ってる意味がわからないけど
col2がidentityならそれでユニークは保障されるから
col1とcol3が全部同じでもなんの不思議もない

どう間違えたらinsert文がupdate文になるのか知らんが
そういうSQL流したんだろ

199NAME IS NULL2016/12/02(金) 17:00:30.97ID:???
col1   col2    col3
Aさん    1    データ1
Aさん    2    データ2
Aさん    3    データ3
Bさん    4    データ4
Cさん    5    データ5
Cさん    6    データ6

col1   col2    col3
Aさん    1    データ1
Aさん    2    データ1
Aさん    3    データ1
Aさん    4    データ1
Aさん    5    データ1
Aさん    6    データ1
こんなふうになりました。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)

200NAME IS NULL2016/12/02(金) 17:54:06.99ID:???
update 表名
set col1 = 'Aさん',col3 = 'データ1'

以外でこうなるSQLを考えるクイズの時間です

201NAME IS NULL2016/12/02(金) 18:25:05.90ID:???
>>196
つか、そもそもそのテーブルのPKがおかしい。

202NAME IS NULL2016/12/03(土) 09:08:53.55ID:???
>>201
複合主キーじゃあないの?
どのあたりがおかしい?

203NAME IS NULL2016/12/03(土) 18:56:22.41ID:???
>>202
普通 Identity だけにしないか?
複合にする意図がわからん

204NAME IS NULL2016/12/03(土) 19:34:14.99ID:???
clo2は単にユニーク保障のためだけで、実質はcol1+連番がキーなんだろ
そういう意図を表すためには複合主キーで良いんじゃね

あくまでcol2単独の検索はしない前提たが
インデックスがcol1からの(クラスタ化)インデックスひとつで済むってメリットもあるかもしれんw

205NAME IS NULL2016/12/03(土) 20:22:19.14ID:???
>>204
> そういう意図を表すため
いやその「そう言う意図」がイミフなんだが

206NAME IS NULL2016/12/04(日) 10:31:37.61ID:???
>196
のような手法は一般には使わないの?

207NAME IS NULL2016/12/04(日) 10:45:59.24ID:5zb5esCr
insertのつもりでupdateしてしまう手法のことか?

208NAME IS NULL2016/12/04(日) 11:20:07.32ID:???
>>196 のような手法
って言うのが Identity + 他の何か を複合キーにすると言う話なら俺は見たことはない
むしろ >>207 の言ってる方がまだあり得る

209NAME IS NULL2016/12/14(水) 16:16:48.82ID:???
TBS

210NAME IS NULL2016/12/15(木) 15:38:31.31ID:???
調べものしててmsdnのサイト見てたら2016の次にVNextとかいうのがでてた
早いなあと思ってたら2016のSP1が既に出てて驚愕
Microsoftなんか焦ってる?

211NAME IS NULL2016/12/17(土) 16:44:00.77ID:???
linux版はvNext相当だっけ

212NAME IS NULL2016/12/21(水) 10:18:02.84ID:???
VPSでSQL SERVER EXPRESS 2016を使う場合には最低限どんなスペックが必要かな?
運用中の人がいたらCPU数、メモリGBなどアドバイスが欲しい。

213NAME IS NULL2016/12/21(水) 18:43:55.62ID:???
規模も用途も書かんのなら、公式の動作環境以上の回答があるとは思えんが

214NAME IS NULL2017/01/18(水) 23:26:29.67ID:???
カーソルのFAST_FORWARDって内部で何してるの?
INSENSITIVEやFORWARD_ONLYだとmaxdop数分のスレッドでカーソルオープンしてるのに、FAST_FORWARDだと1dopになる
クエリは単一テーブルのselect文で、group by、order by句がある
msdnのカーソルのとこ読んだけどわかんなかったよ
ちな2014のsp2です

215NAME IS NULL2017/02/01(水) 11:41:06.33ID:???
入門書としておすすめの書籍ある?

216NAME IS NULL2017/02/03(金) 18:34:25.46ID:0GL48OMF
2014でレプリケーションができないです
配布元のデータができないです
リカバリする方法ないでしょか?

217NAME IS NULL2017/02/04(土) 11:55:40.69ID:nkqeAkqN

218NAME IS NULL2017/02/04(土) 19:51:14.97ID:???
sql サーバーってマルチコアcpuで実行すると並列で処理されてレスポンス速くなったりするの?

219NAME IS NULL2017/02/04(土) 20:08:45.52ID:???
>>218
ならないよ。

220NAME IS NULL2017/02/04(土) 20:09:35.90ID:???
>>218
なるよ

221NAME IS NULL2017/02/04(土) 23:23:46.43ID:???
レスポンス変わるだろうけど、ディスクアクセスの要素のほうが強くて条件次第では大幅に、とはいかなそうね

222NAME IS NULL2017/02/05(日) 02:38:35.83ID:???
2016 express版を使っています。
20万件くらいのテーブルから全件をorder byして取り出すだけで
20秒くらいかかるんです、そんなもんですか?

223NAME IS NULL2017/02/05(日) 07:46:27.65ID:???
>>222
なんにもしなきゃそんなもんでしょ

224NAME IS NULL2017/02/05(日) 08:10:32.76ID:???
>>223
速くする方法を教えて下さい。
データは1時間に一回くらい更新されるので、例えばその時にorder byした
データを作成しておけば良いかなあと思うのですが、そういう方式で速くなりますか?

225NAME IS NULL2017/02/05(日) 08:32:05.47ID:???
>>224
インデックスは張ってるのか?

226NAME IS NULL2017/02/05(日) 08:38:28.48ID:???
>>224
しなけりゃ何秒かかるのよ?

227NAME IS NULL2017/02/05(日) 09:07:02.46ID:???
>>225
なんですかそれは?
>>226
ああ、勘違いでした。
order byしてもしなくてもクエリ自体は一瞬で終わっていました。
時間が掛かるのは
C#でDataTableにloadで読み出しているところでした。
1行が1KBくらいのデータ
200,000行なので、200MBくらいのデータを読み出している計算になりますか。
その場合、20秒くらい掛かるもんですか?1秒以内くらいにできますか?

228NAME IS NULL2017/02/05(日) 10:06:55.05ID:???
>>227
.NETスレ行け

229NAME IS NULL2017/02/05(日) 18:56:51.75ID:???
行かない

230NAME IS NULL2017/02/06(月) 23:59:23.88ID:???
>>227
このスレでの質問じゃないね

231NAME IS NULL2017/02/07(火) 11:16:26.90ID:???
sql serverとsql server express は速さは違うのでしょうか?

232NAME IS NULL2017/02/07(火) 12:31:51.30ID:???
>>231
全然よ

233NAME IS NULL2017/02/07(火) 12:39:38.10ID:???
>>232
何倍くらい?

234NAME IS NULL2017/02/07(火) 12:43:35.56ID:???
>>233
0.8〜1.19倍くらい

235NAME IS NULL2017/02/07(火) 12:57:17.68ID:???
>>231
条件による
使えるメモリーとかコア数違うから

236NAME IS NULL2017/02/07(火) 13:58:59.62ID:???
>>234
誰が測定したのですか?

237NAME IS NULL2017/02/07(火) 18:00:30.07ID:???
なんだこのアホなやりとりは

238NAME IS NULL2017/02/07(火) 19:31:44.18ID:???
レス古事記だろ
スルーでいいよ

239NAME IS NULL2017/02/21(火) 14:26:23.03ID:???
updateするときに、違いがなかったらupdateされないようにしたいです。
(トリガーで履歴を取っているのと、timestamp列が無駄に変わるのを防ぎたいため)

そこで、updateのwhereに
binary_checksum(項目1,項目2,項目3,・・・)<>binary_checksum(@項目1,@項目2,@項目3,・・・)
ってのを追加してます。

概ねいいんですが、かなり単純な条件でコンフリクトが発生しました。
bit型の項目1と項目9があって、項目1:1→0,項目9:0→1 のとき、binary_checksumが一緒になるという・・・

HashBytes だと () の中に複数の項目が書けません。
binary_checksumみたいな () に複数項目が書けるもので、もうちょっとコンフリクト起きにくいなにかないですか。

240NAME IS NULL2017/02/21(火) 14:48:31.75ID:???
>>239
コンフリクトの使い方間違ってるんじゃないか?

それはともかく、単純にwhere old_item1 <> new_item1 or old_item2 <> new_item2 or ...
ってやるのは駄目なのか?

241NAME IS NULL2017/02/22(水) 08:27:45.48ID:???
binary_checksumがどうやって計算してるかしらんが、たとえば単純なsumだったら
(1,0)と(0,1)が同じ値になるのは当然だわな
素直に全項目比較する方がいいんじゃね

どういう状況かわからんが、本来はホストアプリ側で更新する(UPDATE発行する)かどうか判断するべきだと思うけどな

2422392017/02/22(水) 10:07:47.80ID:???
ありがとうございます。
仕方ないので
where ・・・ and (binary_checksum(項目1)<>binary_checksum(@項目1) or binary_checksum(項目2)<>binary_checksum(@項目2) ・・・)
という風にやりました。
HashBytesにしなかった理由は、項目1つならコンフリクトの可能性が低いと判断したためです。
(演算の軽いほうで)

243NAME IS NULL2017/02/22(水) 21:31:00.62ID:???
SQLServerを使用したいと思っているのですが、全くの無知なので教えて頂きたいです。

現在、accessを使用しています。
接続人数は3人(3台)で、バックエンドデータを1つ作成しフロントエンドを3台に配布してリンクテーブルを使って使用しています。
最近、同時接続時にクエリ実行が遅くなってきて困っています。

このバックエンドデータをSQLServerに移し、ODBC接続でリンクすればクエリ速度等は解決するのでしょうか?
また、SQLServerに移行したとしてもフロントエンドのacceesでは同じようにクエリやVBAでテーブルの印刷処理やクエリでの更新等も特に設定などを変えずにそのまま使用出来るのでしょうか?

初歩的なことだと思うのですがよろしくお願いします。

244NAME IS NULL2017/02/22(水) 21:55:11.78ID:???
>>243
とりあえずやってみると良いよ
費用かからないし
しかし今時こんなが環境あるんかな
20年くらい昔によくあったやつ

245NAME IS NULL2017/02/22(水) 23:17:15.03ID:???
>>243
アップサイズは全部が全部改善するとは限りませんが基本的には改善します
下の方が書かれている様に、まずやってみると良いですよ
これくらいか〜と体感できますので

ODBCリンクであれば基本的にフロントのAccessはそのまま使用できます
SQL Serverは文字コード、ソート順、キー、インデックス
くらいは確認しておいた方が良いですよ

246NAME IS NULL2017/02/23(木) 12:33:19.21ID:???
>>244
>>245
有り難うございます。
バックエンドをSQLServerに移行すると、フロントエンドでのVBAやクエリでの処理が今まで通り使えるのかが分からずに悩んでいました。

基本的には、バックエンドがacceesファイルからSQLServerに替わっても、特に編集し直すこともなくフロントエンドを使用することが出来るで大丈夫ですか?

247NAME IS NULL2017/02/23(木) 14:40:40.20ID:???
>>246
.mdb or .accdbでODBC接続なら編集不要だと思うけど
SQL SERVERの照合順序は気を付けて
照合順序はアプリ側の実装に依存するから自力で調べて

248NAME IS NULL2017/02/23(木) 18:48:24.75ID:???
>>247
助言有り難うございます。
accdbなのでそのまま使えそうです。

とりあえず、SQLServerをインストール、accessデータをインポートしODBC接続までしました。
何故かテーブルデータをフロントエンドのaccessで編集出来なかったのですが、主キーが設定されてないのか、ファイアーウォールがまだ未設定だからなのか調べ中です。

疑問なのですが、
10万件のデータがあり、1件のデータを更新したい為に、単純な更新クエリを作成したとします。
単純な更新クエリなので抽出や選択もなく、10万件の全てのデータが更新されます。つまり9万9999件は無駄な更新です。
これをaccessデータのリンクテーブルではかなり時間がかかりますが、SQLServerでのリンクテーブルでは数秒で処理が終わるほど変化があるのでしょうか?
それとも、このような無駄なクエリではあまり速度は変わらず、クエリ自体を考え直すべきなのでしょうか?

249NAME IS NULL2017/02/23(木) 20:18:10.72ID:???
>>248
テーブル編集はSQL Server Management Studioを使うか、DDL直接投げるか
単純なUPDATEなら10万レコードだろうが一瞬で終わるよ(※データ量次第)

250NAME IS NULL2017/02/23(木) 20:51:17.86ID:/7OWtulZ
思わせぶりな※

251NAME IS NULL2017/02/23(木) 21:19:27.58ID:???
>>248
昔のAccessしか知らないけど
主キー無い場合はテーブルリンク作成時にキー項目選択するとかだったはず
当然可能なら主キーは設定すべきだけど

「9万9999件は無駄な更新」ってのが意味不明
何万件あろうが更新対象が1件の場合は1件しか更新しないよ
その場合の更新は文字通り一瞬で終わる

252NAME IS NULL2017/02/23(木) 22:30:45.12ID:???
>>249
フロントエンドのフォームでテーブルのデータは編集出来ないのでしょうか?
>>251
私の勘違いでしょうか。
いつも日報等で更新したいデータはカレントレコードの1件なのですが、更新クエリを使うと〜万件(全件)のデータを更新します、と表示されて、数分かかります。
クエリはフィールドAが空白ならフィールドBに"合格"の文字、フィールドAが空白以外なら"不合格"の文字を入れる、というクエリです。
これでは全レコードがクエリの対象になっていると解釈すべきですか。

253NAME IS NULL2017/02/24(金) 02:51:11.36ID:???
>>252
テーブル開いてデータ変更できるよ
更新権限のないユーザーで接続してると思う

254NAME IS NULL2017/02/24(金) 06:17:19.75ID:???
>>252
このロジックだったら全件更新だよ

以下なら2件の更新になるよ
それでも時間かかる場合はAとBのインデックスを作成すれば一瞬で終わる
Aが空白でBが合格以外の場合は、Bに合格を入れる
Aが空白以外でBが合格の場合は、Bに不合格を入れる

255NAME IS NULL2017/02/24(金) 07:23:35.87ID:???
>>252
> いつも日報等で更新したいデータはカレントレコードの1件
そのレコードを抽出する選択クエリを作成すればいいだけじゃね?

256NAME IS NULL2017/02/24(金) 11:13:40.64ID:???
>>252
>全レコードがクエリの対象になっていると解釈すべきですか
どんなクエリ(SQL)流したかとどんなテーブル(インデックス)だったか分からんと分からん
が、全件読み込んでる可能性が高いなぁ

>>254
クエリの検索条件にACCESSの関数入れたりしたら全件取得するかもしれんぞ

メインはサーバ側の話じゃなくてACCESSの動作の話だし
ACCESSのスレ探すが作るかして移動したほうが良いんじゃね

257NAME IS NULL2017/02/24(金) 12:27:49.62ID:???
皆様有り難うございます。一度クエリを見直してみます。

色々と調べたのですが、単純なフロントエンドをaccess、バックエンドをSQL ServerでODBC接続では、
クエリ等の処理はサーバー側でななくクライアント側で処理されるのであまり速度の恩恵はないと見たのですが、やはりそうなのでしょうか?
これをサーバー側で処理する場合、かなりVBA等の手直しが必要なそうですが、そこまでいくと素人レベルでは難しそうです。

258NAME IS NULL2017/02/25(土) 03:47:54.77ID:???
やってみてそう感じたなら恩恵はないんだろうね

259NAME IS NULL2017/02/25(土) 11:50:18.21ID:???
>>257
SQL文の実行はAccessではなくSQL Serverだよ

>>254で改善できると思われ

260NAME IS NULL2017/02/25(土) 17:40:28.48ID:???
>>259
有り難うございます。
SQL文はSQL Serverで処理されるのですね。

今の解釈としては
accessのみのリンクされたデータベースでは、処理は全てクライアント側の仕事になりネットワークトラフィックが膨大になる。
SQL ServerとのODBCのリンクテーブルでは、SQL文をSQL Serverに渡し、SQL Serverが処理を行い、その解をクライアントに渡すのでネットワークトラフィックが少なくてすむ。
という理解で大丈夫でしょうか?

今までクエリ処理が重かったので、VBAを使ってきたのですが、出来るものはクエリに変えた方がいいのでしょうか?

261NAME IS NULL2017/02/25(土) 19:54:24.52ID:???
アクセスでodbcリンクテーブルを使うとデータが多いと遅いから
更新ない一覧表示とかの時はパススルークエリ使ったほうがいいと思うわ

262NAME IS NULL2017/02/25(土) 23:10:34.44ID:???
>>260
>SQL文をSQL Serverに渡し、SQL Serverが処理を行い
は正しいんだが、実行する内容によって、まずACCESSがどんなSQLを発行するか
その結果を受け取った後にどんな処理をするかによるので
>ネットワークトラフィックが少なくてすむ
とは限らん
>>254で言ってるように、検索条件にACCESSの関数入るような処理だと結局ACCESS側で全件取得して検査するかもしれん
なんにしてもACCESSの話だからこれ以上はどっか移動しろ

263NAME IS NULL2017/02/26(日) 23:01:28.87ID:???
「上位200行を編集」で表示されたデータを全選択してコピーすると
選択したデータにはあった括弧などの文字が欠落してコピーされる」みたいになバグがSqlServerにあると聞いたのですが
本当なのでしょうか?(例えば"(ABC)"を選択してコピーし、メモ帳などに貼り付けると"(ABC"になってたなど)

264NAME IS NULL2017/02/26(日) 23:28:44.28ID:???
なんでどこで聞いたか言わないのかねえ

265NAME IS NULL2017/02/27(月) 08:15:54.58ID:???
自分で試せる環境はないのかね。

266NAME IS NULL2017/03/03(金) 00:00:11.98ID:???
VB6からSqlServerに接続する時はoo4oとかいうのを使うんだっけ?

267NAME IS NULL2017/03/03(金) 04:44:09.46ID:???
それオラクル

2682662017/03/03(金) 06:07:27.23ID:???
>>267
そうだった、オラクルだったw

10年以上前(受託開発やってた会社の正社員時代)に使ってたからすごくなつい気分になったよ、ありがとう。
そんな俺も今じゃ客先常駐のしがない派遣社員・・・orz

269NAME IS NULL2017/03/04(土) 17:12:25.44ID:???
sql server使う人は言語はphp?

270NAME IS NULL2017/03/04(土) 17:31:18.72ID:???
>>269
なぜそう思った

271NAME IS NULL2017/03/05(日) 06:30:37.18ID:???
sql server使う人は言語はC#?

272NAME IS NULL2017/03/05(日) 11:37:02.05ID:???
SQLServerはStandardとEnterpriseのEdition機能差が酷すぎるわ
碌に新機能使えないならStandardなんて名乗らずにLiteとかにしろよと

273NAME IS NULL2017/03/05(日) 11:41:36.54ID:???
おれは C#,C++, PowerShell 辺りが多い

274NAME IS NULL2017/03/05(日) 11:53:02.37ID:???
Javaとか

275NAME IS NULL2017/03/05(日) 17:53:33.74ID:???
Javaと聞くといつも風呂釜洗浄剤を思い浮かべてしまう

276NAME IS NULL2017/03/05(日) 18:03:30.27ID:???
俺はexcelvba

277NAME IS NULL2017/03/05(日) 20:06:10.87ID:???
>>276
vbaで出来るの?

278NAME IS NULL2017/03/05(日) 20:28:50.09ID:???
>>277
vba sql-server でググれ

279NAME IS NULL2017/03/05(日) 20:35:26.58ID:???
>>277
ado(activex data object)でやってる
マスターの更新とかデータのセットや取得はエクセルでやったほうが楽チン

280NAME IS NULL2017/03/06(月) 00:11:22.47ID:???
OLEDB廃止だったはずだけど、いまだにADOで接続できるドライバあるのか
まあ、OLEDB-ODBCで行けるっちゃいけるんだろうけど

281NAME IS NULL2017/03/08(水) 14:25:17.42ID:???
現在2012にて動いている環境を2014に移行させようと思っています。

データは毎夜間にbcpコマンドを使って取り入れており、そのコマンド・フォーマットファイル自体は既存のものを流用予定です。
で、実際に動かしてみると2014のみ

SQLState = 22005, NativeError = 0
Error = [Microsoft][ODBC Driver 11 for SQL Server]キャストした文字コードが無効です。

が2レコード出ました。原因のレコードは突き止めたのですが、問題は分からず。
いろいろ試すと以下の事が分かりました。

・datetime2を使用しているカラムが怪しい?
・2レコードのうち片方のレコードを削除すると全レコード取り込みOK
・問題の1レコードの位置を最下部に移動して保存し直しすると全レコード取り込みOK
・問題の1レコードのdatetime2の最下部を1桁切ると全レコード取り込みOK

この件に関しては対応方法はあるのですが、そもそもの原因が分からないのは気持ち悪いです。
何か思いつく事はありますでしょうか?

282resumi2017/03/08(水) 17:40:19.11ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。

283resumi2017/03/08(水) 18:04:56.55ID:hjh5f++s
https://goo.gl/l3fSYl
これ本当??
普通にショックだね。。

284NAME IS NULL2017/03/08(水) 20:59:53.54ID:???
>>281
暗黙の型変換かなあ

bcpじゃないけどバッチ処理で値によって引っかかって
手前側でcastして明示的に型変換かけてから突っ込んだことがあるな

1レコード削除したら動くとか、ケツに持ってったら動く
とは整合性取れないけども

285NAME IS NULL2017/03/08(水) 22:54:59.32ID:???
問題のレコードの末尾にエスケープコードか何か入ってるんじゃないの?

286NAME IS NULL2017/03/09(木) 10:10:24.96ID:???
NVARCHAR内のNULL文字(NCHAR(0))を検索または置換する方法はありますか?
LIKE '%'+NCHAR(0)+'%'
REPLACE(name, NCHAR(0), '')
等を試してみましたが、だめでした。

287NAME IS NULL2017/03/09(木) 13:06:16.75ID:???
>>286
正しいやり方かどうかはわからんが
select * from table where name like N'%' + nchar(0) + N'%' collate JAPANESE_BIN
で検索できたよ

2882862017/03/09(木) 17:08:09.99ID:???
>>287
できました
ありがと

289NAME IS NULL2017/03/09(木) 17:13:43.94ID:???
SQLサーバっていまだにNとかncharとかcollateとかいるのか

290NAME IS NULL2017/03/09(木) 22:25:14.46ID:???
>>289
ncharは他のdbでもいるだろ

291NAME IS NULL2017/03/10(金) 11:42:27.96ID:???
>>290
あ、そうなの?
最近PostgreSQLしかやってないから、他DBがどうなってるのか知らない

292NAME IS NULL2017/03/28(火) 10:32:41.51ID:???
1回目もクエリだけやたら時間がかかるっていう経験ないですか?
2回目は速い
改善する方法あったら教えてください

293NAME IS NULL2017/03/28(火) 13:20:36.85ID:???
>>292
まずは、やたら時間がかかる原因を調べる。実行計画を見るとか。

そういうクエリ自身の問題ではない場合で、以下にあてはまるのなら、0回目のクエリを発行してデータをキャッシュにのせればいい。
(0回目:データベース起動後に重いクエリを実行するとか、テーブル全体を読んでキャッシュにのせるとか)
・単に対象データを物理ディスクから大量に読む必要がある
・なおかつ何回も類似クエリを発行する必要がある
・1回目が遅いのも改善したい

キャッシュミス多発なら、キャッシュサイズを拡大する。
ハード性能的に無理なら、より性能の良いハードに乗り換える。

294NAME IS NULL2017/03/28(火) 14:33:14.80ID:???
DBサイズくらいのメモリ積め

295NAME IS NULL2017/03/28(火) 14:55:00.82ID:???
今調べたら、Windows Serverは余裕でTBの領域に入ってるな。2016でmax 24TB。
メモリは32GB*4の128GBで17万程度。

296NAME IS NULL2017/03/28(火) 16:34:29.46ID:???
ストアドにしてコンパイル済みにする手もあるが

297NAME IS NULL2017/03/30(木) 00:46:03.18ID:???
ストアドにしたって、データのキャッシュミスは減らんと思うが
コンパイル時間で1回目だけやたら時間がかかるとか、どんな複雑なクエリ書いたらそうなるってんだ

298NAME IS NULL2017/03/30(木) 15:01:26.21ID:???
>>297
単にディスクからの読み込み量が多いだけでしょ
場合によっては、その読み込みが不要な場合もあるから、1回目のクエリから高速化できかもしれん

299NAME IS NULL2017/04/02(日) 18:33:09.18ID:???
>>298
データがキャッシュにヒットする以外に
ディスクからの読み込みが不要で高速化できる場合の具体例をあげてくれ

300NAME IS NULL2017/04/03(月) 13:31:22.61ID:???
>>299
説明不足ですまん。
ディスクからの読み込みがゼロになるということじゃなくて、不要な読み込みがなくなるかもという話。
例えば、
・インデックスがなくseq scan発生
・インデックスはあるがクエリがまずくてインデックスが使われずseq scan発生
とか。

301NAME IS NULL2017/04/04(火) 08:11:48.03ID:???
>>300
それストアドにしたって解決されないわけだが
むしろ実行計画の生成タイミングで悪化する可能性もあるんじゃね
SQL Serverのストアドがいつ実行計画立てるかしらんけど

302NAME IS NULL2017/04/04(火) 10:59:56.61ID:???
>>301
ストアドは関係ないよ
クエリの内容そのものに問題があったり、indexを作ったりしたら読み込みページ数が減るかもねという話
なので、まずは実行計画を見るところから始めましょうということ

303NAME IS NULL2017/04/04(火) 11:06:24.35ID:???
舐めるデータが多くて、初回はハードディスクから、2回目以降はキャッシュされたメモリーから
だから速度が違う

ストアドにすることで、コンマ何秒かは改善するかもしれないが、その程度

あとインデックスを見直すか

304NAME IS NULL2017/04/04(火) 11:23:43.06ID:???
ストアドストアド言ってる人は、90年代に生きてるんですかね

305NAME IS NULL2017/04/04(火) 12:18:00.83ID:???
今どきはストアド使わんのがトレンディなんか?

306NAME IS NULL2017/04/04(火) 13:22:41.59ID:???
>>305
実行時間短縮が目的でストアドを使う奴はいないだろうね

307NAME IS NULL2017/04/04(火) 14:30:20.24ID:???
数百KBレベルのクエリなら、parse->palnningでコンマ何秒かかかるかもしれん

308NAME IS NULL2017/04/04(火) 19:25:55.84ID:???
>>306
関係ない事を言うのに俺にアンカつけんのやめてもらえんかな
俺までバカに見えるやろが

309NAME IS NULL2017/04/05(水) 10:42:22.90ID:???
>>308
>>305がバカな発言だと思ってないんだw

310NAME IS NULL2017/04/05(水) 12:26:42.39ID:???
>>309
だからなんだよ?
お前がそう思ってる事が今なんか関係あるのか?
バカしかいないのかここは

311NAME IS NULL2017/04/05(水) 13:18:00.59ID:???
>>310
> だからなんだよ?
>>305みたいなマヌケなレスするなってことだよ
そんなこともわからんバカなの?

312NAME IS NULL2017/04/05(水) 13:28:16.18ID:???
>>305
いつまでも暴れられると困るので。
> 今どきはストアド使わんのがトレンディなんか?
そういうトレンドはありません。

313NAME IS NULL2017/04/05(水) 20:27:50.95ID:???
まあしかし、ORMの普及や回線速度の向上とかでストアド不要論が優勢な流れはあるかと
昔はトラフィック減らして速度向上させるためにストアドって流れはある事はあったからな

314NAME IS NULL2017/04/05(水) 21:15:40.39ID:???
>>311
だから関係ないレスでアンカつけんのやめてもらえんかな
俺までバカに見えるやろが

315NAME IS NULL2017/04/05(水) 21:58:10.55ID:???
>>313
SQLSeverと親和性高いC#がEF推しているのを見ると不要論が優勢でも不思議じゃないな

316NAME IS NULL2017/04/06(木) 10:39:37.36ID:???
>>315
EFとストアドに何の関係が?

317NAME IS NULL2017/04/06(木) 10:50:33.00ID:???
>>313,315
ORMやEFが広まれば、よりストアドプロシージャ・ファンクションの需要が高まる気がするが。
ドメインロジックはサーバ側で実装し、クライアントはそれを使用するだけというスタイル。

318NAME IS NULL2017/04/06(木) 13:19:00.97ID:???
そんな思想があったらRailsなんぞ流行らんわ
何処の時空の話だよ

319NAME IS NULL2017/04/06(木) 13:59:58.76ID:???
>>318
まぁ、RailsだろうがEFだろうが、データをどかっと取ってきて、クライアントコードで
ごりごりドメインロジックを実装するような層には関係ない話かな。

320NAME IS NULL2017/04/06(木) 14:11:49.32ID:???
そんな話じゃねえよ
EFが何しにPOCOなんての売りにしてたかって話だ

321NAME IS NULL2017/04/06(木) 15:42:00.99ID:???
>>320
つまりは、
> データをどかっと取ってきて、クライアントコードで
> ごりごりドメインロジックを実装する
ということだろ?
POCOメインのプログラマには関係ない話だよ。

そんな話じゃないなら、どんな話なんだ?

322NAME IS NULL2017/04/06(木) 15:53:14.04ID:???
DB側でスキーマ書いて処理も書いてってのが古い思想という話をしている
開発スピードが無闇に上がってスキーマ変更朝令暮改でって今時はな

323NAME IS NULL2017/04/06(木) 15:58:59.46ID:???
>>322
> DB側でスキーマ書いて処理も書いてってのが古い思想という話をしている
なるほどね。
でも、ドメインロジックをデータベース側に寄せるか、クライアント側に寄せるかという問題は、
今でも存在する。ふるいも新しいもないと思うが。

> 開発スピードが無闇に上がってスキーマ変更朝令暮改でって今時はな
それこそ、データベース側にドメインロジックの実装を寄せた方がいいのでは?

324NAME IS NULL2017/04/06(木) 16:05:36.81ID:???
例えば、2003年のMartin Fowlerのブログポスト:
『ドメインロジックとSQL』
http://bliki-ja.github.io/DomainLogicAndSQL/

ここに書かれていることは、全然古いとは思わない。
逆に、自動生成されるコードをメインに使うようになる場合は、ドメインロジックを
ストアドファンクションで実装してViewにした方がいい場合も結構あると思うんだが。

325NAME IS NULL2017/04/06(木) 16:19:28.98ID:???
昔々のウォーターフォールで上流で設計決まる時代ならそれもよかろうさ
だが今はデータ構造から卓袱台返される
その時アプリとDB両方に手ぇ入れるのと
アプリだけで済むのとどっちが早いか?
自明だろ

326NAME IS NULL2017/04/06(木) 18:53:09.88ID:???
DB側でごりごり書いたストアドって、InMemoryでUnitTestできるのかい?

327NAME IS NULL2017/04/06(木) 20:44:49.38ID:???
Web系とかで高速開発/デプロイな現場なら
コードファーストも面白いし効率あがりそうと思うけど
DevOpsの時代っても考えなしに書くでなし
結局はV字開発なんだからDB側でスキーマ決めるくらい
やれば?みたいな思いはあるな古い考えなんだろうけど

SIerソルジャーだから>>324もよくわかる
SQL一発取得+コーディングレスなアプローチが
楽/効率的な局面は現場じゃザラにあるよねえ

SSRS/PowerBIとかDataSpiderだの触るととくにそう
ストアド書いてぽちぽちするだけでけっこう
運用に耐えるもんできるし変更追従も保守も楽だしな
基幹から社内向けWebで集計帳票や明細表な要件なら
SQL以外のコーディング自体がそもそもバカバカしい

328NAME IS NULL2017/04/08(土) 22:23:48.60ID:???
>>327
純粋なコードファーストはある程度以上の規模だと使い物にならんと思ってた
スキーマはDB側でかっちり決めんと話にならんだろうと

これが古い考えだと言われればそうなんだろうかと思ってた
が、既存のデータベースからコードファーストなんて手法が出来た所を見ると
やはりスキーマをDB側で決めるのは今でも必要なんじゃないか

ストアドにいろんなものを閉じ込めるのは、手法の新旧で言えばそれこそ古い手法だと思う
ストアドの保守はアプリの保守よりコストが高いのが現状じゃないかと思う
ストアドの保守がアプリの保守より低コストだって言う所ならそれを採用するのもありなんだろうけど

329NAME IS NULL2017/04/09(日) 16:01:53.60ID:???
>>328
ストアドって何よ?

330NAME IS NULL2017/04/09(日) 18:40:23.01ID:???
with(nolock)をselect文全てに付けるとヤヴァイ?
ググったらコミット前のデータが返ってくるとか
ページ分割が起こった場合行の重複や欠落が発生するとか書いてあるけど
今仕事で触ってる既存のselect文のコード全部そうなってる

331NAME IS NULL2017/04/09(日) 19:22:13.71ID:???
ヤバイかどうかは業務内容による

332NAME IS NULL2017/04/10(月) 14:48:01.02ID:???
>>329
質問の真意が図りかねるが
>ストアドにいろんなものを閉じ込める
の事であるなら、たとえば
ビジネスロジックをストアドとして実装することや
DBアクセスの結果をストアドの帰りとすることでスキーマ変更をアプリに意識させないこと
などの手法を指してる

純粋にストアドの意味が分からないなら
DBに格納できる一連の手続きかな

333NAME IS NULL2017/04/10(月) 15:17:23.17ID:???
>>330
常に1スレッドからしか触られない前提なら別にヤバくない

334NAME IS NULL2017/04/10(月) 22:02:15.03ID:mMYNtWws
ストアドってPGのたしなみとして
できて当たり前だと思うけど
今の新人は>>329みたいなのが
多いのか。

335NAME IS NULL2017/04/11(火) 07:27:15.05ID:???
>>333
誰も同時に触らないならnolock必要なくね?
何のために入れたのやら

何処かでnolock入れると速くなるよ!とかデッドロック回避できるよってのを聞いてよく考えずに入れたのか

同時に一人(1スレッド?)しか触らないなら
2つのロックが対立することは無いんだから

336NAME IS NULL2017/04/11(火) 13:39:32.49ID:???
>>335
nolock指定すれば雀の涙ほど速くなる
それ以外の理由? 知らんそんなものは管轄外だ

337NAME IS NULL2017/04/11(火) 19:12:06.12ID:???
Hyperーvのレプリカサーバーに入っているSQLSERVERもライセンスって必要ですか?

338NAME IS NULL2017/04/11(火) 19:42:30.31ID:???
>>337
OSのライセンスが2つ必要ならそりゃSQLServerのライセンスも同じじゃね

339NAME IS NULL2017/04/11(火) 20:03:02.82ID:???
>>338
ありがとうございました。
不要と理解しました

340NAME IS NULL2017/04/12(水) 01:11:00.92ID:???
>>333,335
スレッド一つでも複数コネクション持ってゴニョゴニョすると問題が出る気がする

341NAME IS NULL2017/04/12(水) 03:42:34.42ID:???
>>340
さすがにそれはない
まさかCOMMITせん訳でもあるまい?

342NAME IS NULL2017/04/12(水) 06:15:01.88ID:???
>>330
マルチスレッドの場合でも全トランザクションを
同期化してスレッドセーフにすればヤバくない

343NAME IS NULL2017/04/13(木) 00:21:38.38ID:???
>>341
コミットしてから次のトランザクション始めるならコネクション二つとか必要ないだろ
ようは同時実行するトランザクションがあるかどうかで、スレッドとか関係ないって話

344NAME IS NULL2017/04/13(木) 14:55:41.05ID:???
スレッド内でトランザクション完了しないで別のトランザクション始めるとかどんな状況だよ
特にSQLServerだと無駄に昇格起こってMSDTCエラー起こすぞ

345NAME IS NULL2017/04/13(木) 15:49:12.08ID:???
スレッドがどうこうとか、あんまり関係ない。
別プロセスでも話は同じ。

要は、トランザクション分離レベルがダーティーリードになっても大丈夫かどうかで決定すべき。
ダーティーリードとは、自分以外の誰か(別プロセスも含む)のコミット前のデータを読むことに
なっても問題ないかどうかという話。

346NAME IS NULL2017/04/13(木) 17:00:25.60ID:???
>>344
シーケンスなかった時に、連番とるためにやったことあるわ

347NAME IS NULL2017/04/13(木) 19:40:53.62ID:???
>>346
俺もよくやるよ。>>344が無知なだけ

348NAME IS NULL2017/04/13(木) 19:43:06.41ID:???
>>344
晒し

349NAME IS NULL2017/04/13(木) 19:49:56.90ID:???
>>347-348
まさかと思うが入れ子トランザクションでドヤってんじゃあるまいな…?

350NAME IS NULL2017/04/13(木) 20:10:39.13ID:???
>>349
何のために別にコネクション(トランザクション)が必要か考えたら
入れ子トランザクションではダメなことぐらいわかるだろうに

351NAME IS NULL2017/04/13(木) 20:15:54.97ID:???
>>350
連番取るのにトランザクション外からやるっての?
ますますもって意味わからんぞ

352NAME IS NULL2017/04/13(木) 21:36:54.46ID:???
>>351
連番管理用のテーブルと、連番を利用するテーブルを別のテーブルにするんだよ
短時間で終わる連番の発行と、時間のかかる更新系の処理を別トランザクションにすることで
連番管理用のテーブルのロックを解放する

353NAME IS NULL2017/04/13(木) 21:43:45.73ID:???
>>350
よーく考えよう

354NAME IS NULL2017/04/14(金) 10:56:34.23ID:???
>>352
今となっては、バッドノウハウ

355NAME IS NULL2017/04/14(金) 11:06:49.82ID:???
結論は何も考えずにnolock入れるつもりなら止めとけってことじゃないの

356NAME IS NULL2017/04/14(金) 15:02:31.19ID:???
>>352
それフツーに不整合出ねえ?

357NAME IS NULL2017/04/14(金) 15:57:02.04ID:???
>>352
出ませんが、何か?

358NAME IS NULL2017/04/14(金) 20:02:12.33ID:???
>>354
今時の代替手段はどんなの?

>>356
何を懸念してるか知らんが問題ない
欠番の発生は想定内

359NAME IS NULL2017/04/14(金) 20:21:40.16ID:???
>>358
シーケンス

360NAME IS NULL2017/04/14(金) 20:31:11.74ID:???
>>358
> 今時の代替手段はどんなの?
シーケンスだろ

361NAME IS NULL2017/04/14(金) 21:37:16.31ID:???
シーケンス互換性ないじゃん

362NAME IS NULL2017/04/15(土) 14:02:49.32ID:???
>>361
シーケンスと何が互換性ないって?

363NAME IS NULL2017/04/16(日) 08:42:49.91ID:???
>>362
違う
シーケンスとかIDENTITYは製品間で互換性無いって言ってんだろ

364NAME IS NULL2017/04/17(月) 00:45:52.25ID:???
今の流れでそれがどうだと?

365NAME IS NULL2017/04/17(月) 13:04:14.32ID:???
シーケンスって…なに?

366NAME IS NULL2017/04/17(月) 14:40:37.19ID:???
>>365
つ google

367NAME IS NULL2017/04/17(月) 16:51:13.99ID:???
何でこの程度のことググらないのか、毎度ながら不思議

368NAME IS NULL2017/04/18(火) 12:21:23.47ID:???
むしろお前が教えればいいだけなのにどうしてわざわざググらなければいかんのか

369NAME IS NULL2017/04/18(火) 13:06:43.50ID:???
教えてくれる奴が来るまで待つとか馬鹿でしょ

370NAME IS NULL2017/04/18(火) 19:21:58.59ID:???
いや待てよ勝手に理解したつもりになるな

371ich12017/04/21(金) 16:41:35.14ID:R/eXxgbc
https://goo.gl/q9Ml0S
これは嘘でしょ?本当だったら落ち込むわ。。

372NAME IS NULL2017/04/22(土) 01:49:55.34ID:???

373NAME IS NULL2017/04/25(火) 22:38:34.87ID:???
最近DB触り始めたんですが、チューニング的なことをする必要が出てきてT-SQLを知りたいです
例:)http://outofmem.tumblr.com/post/77053433681/sql-serverdb%E5%86%85%E3%81%A7%E7%99%BA%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%9Fsql%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B
↑こんなふうにシステムビューとか含めてリファレンス的に読める本があれば教えて欲しいんですがどうですか

調べてもゼロ年代の本しかなくて、いきなり買うのも勇気がいります……
ちなみに日本語しかダメです

374NAME IS NULL2017/04/25(火) 23:17:16.27ID:???
>>332
>「ストアド」 = 「DBに格納できる一連の手続き」

いかにもシステム屋さんな定義だなw

375NAME IS NULL2017/04/26(水) 12:56:31.64ID:???
>>374
では、君の素晴らしい定義を教えてもらおうかな

376NAME IS NULL2017/04/26(水) 20:31:45.30ID:yyy4jyWJ
いきなり答えあわせじゃおもしろくないから
>>374に笑われない定義は何かな?」ゲームしようぜ

377NAME IS NULL2017/04/26(水) 22:45:55.34ID:???
べつに>>374の定義はどうでもいいけど
>>374が何屋さんを自称するのか気になるわ

378NAME IS NULL2017/04/29(土) 00:21:18.65ID:???
まだほとぽりは冷めてないぜ>>374

3793742017/04/29(土) 01:07:23.45ID:???
>>375-378
おいやめろw
俺はこの業界にどっぷりのただのIT土方だよ。
定義があまりにもプロっぽい(同業っぽい)からちょっとつついてみただけだw

380NAME IS NULL2017/04/29(土) 09:51:21.13ID:???
すみません。質問させてください。
CREATE PROCEDUREについて、
ストアドプロシージャが既に登録されていたらDROP後、CREATE→OK
ストアドプロシージャが既に登録されていたらなにもしない  →NG
となるのはなぜなのでしょうか?

https://technet.microsoft.com/ja-jp/library/ms175502(v=sql.105).aspx」の
「バッチの使用に関するルール」に「・・・CREATE ステートメントはバッチの最初に記述する必要があります」
とあるので構文エラーなのかなとは思うのですが、構文エラーとした理由はあるのでしょうか?

これは出来る
IF OBJECT_ID ( 'dbo.プロシージャ', 'P' ) IS NOT NULL BEGIN
DROP PROCEDURE dbo.プロシージャ
END
GO
CREATE PROCEDURE dbo.プロシージャ・・・

これはできない
IF OBJECT_ID ( 'dbo.プロシージャ', 'P' ) IS NULL BEGIN
CREATE PROCEDURE dbo.プロシージャ・・・

381NAME IS NULL2017/04/29(土) 19:13:45.28ID:SlYPafLa
create or replace
じゃ不満なのか?

382NAME IS NULL2017/04/29(土) 20:46:20.98ID:???
不満はないんだけど、なんでかなと。そういうものなんだと思っときます。

383NAME IS NULL2017/05/07(日) 03:32:11.96ID:???
物凄く初歩的で申し訳ないのですが、SQL Server2008をSQL Server2014へ
アップグレードでインストールした後、不要な2008を消したいんですが
普通にアンインストールでいいものなんでしょうか。

384NAME IS NULL2017/05/07(日) 06:15:58.60ID:???
>>383
たぶん良いんじゃないか。
結果を教えてくれ。

385NAME IS NULL2017/05/10(水) 00:57:31.27ID:???
>>383ではないが
2008R2 Express SP3を2016 Expressにして、2008をアンインストールしてみた
軽く動かした感じでは動いてるっぽいけど
2008のアンインストールが色々手間だった

まあ実務マシンなら、俺ならアンインストールせずにスタートメニューだけ消しとく

386NAME IS NULL2017/05/10(水) 21:21:25.38ID:???
俺なら2008アンインストール、2016インストールするけど

387NAME IS NULL2017/05/11(木) 19:47:33.46ID:XdKWiRE4
Windows ServerでSQL Server 2012を入れております
SSMSでバックアップのスケジュールを確認しようとしたんですが管理にメンテナンスという項目がありません
SSMSを見てもExpressという表示はないんですが原因って他にありますか?

388NAME IS NULL2017/05/11(木) 19:51:28.91ID:???
ログインユーザーがsysadminじゃなかったってのは昔あったな

389NAME IS NULL2017/05/12(金) 13:25:14.41ID:???
https://msdn.microsoft.com/ja-jp/library/ms178127.aspx
Agent XPsが無効だとメンテナンスプランやらエージェント使えないんでは
あー、でもこれメンテナンスの項目は出てた気がするなあ

390NAME IS NULL2017/05/12(金) 14:33:52.18ID:???
今↓の現象が発生しました。

SSMS2016 で日本語入力が行えない IMEがオフになったままになる
https://social.msdn.microsoft.com/Forums/ja-JP/09e3ebdf-f9ec-457c-aedd-e521e30322f2/

物凄い致命的な不具合だと思うんですが、みんなの大丈夫ですか?

391NAME IS NULL2017/05/12(金) 20:07:03.25ID:Kt4maARH
>>388
sysadminというのはロールですよね?
Administratorですし、sysadminにもチェックはありました

392NAME IS NULL2017/05/12(金) 22:11:13.31ID:???
SSMSってエディション関係ないからな。DBエンジンがEXPRESSだったって落ちじゃないのか
接続先のバージョンとか出てたっけ

393NAME IS NULL2017/05/13(土) 06:25:13.83ID:???
2016のssmsとexpress使ってるけど、imeの問題は出ないぞ

394NAME IS NULL2017/05/13(土) 07:09:40.03ID:???
Visual Studio 2015 Express 使ってるけどごくまれ(数ヵ月に一回ぐらい)IME がOnにならなくなる時がある
メモ帳とかを起動してIMEをOnにしたりするとVisual Studioでも普通に使えるようになるからあまり気にしてないけど

395NAME IS NULL2017/05/13(土) 11:11:12.87ID:???
>>389
項目は出ているけど開けなかった記憶あるわ
項目自体出てないのは>>392の通りExpress使っているとかじゃないのかね

3963912017/05/13(土) 23:35:10.24ID:X0tWj4fp
すいません、たぶんDBのほうがExpress使ってるかもしれません
どこで確認できますか?また自動でバックアップする方法とかありますか?

397NAME IS NULL2017/05/14(日) 00:45:41.95ID:???
SqlServerに特化したPowerShellがあるらしいけど、使ってる人いるのかな?

398NAME IS NULL2017/05/14(日) 01:42:00.54ID:???
>>396
マジで言ってるのかアレだなあ...
&#9642;&#65039;エディション確認
・繋いだインスタンスを右クリックでプロパティ
・masrerデータベースで
select @@version

&#9642;&#65039;バックアップ
Backup database コマンド書いたSQLファイルを
sqlcmd/osqlで呼ぶbat書いてタスクスケジューラに登録

expressで開発、検証じゃなく本番運用する気なら
悪いこといわんからstandard買って載せ替えるが宜しい
奉行とかPCAとかのパッケージバンドルかねえ

399NAME IS NULL2017/05/20(土) 15:16:05.49ID:BH3EK1xP
アップルラボ 詐欺 怪しい 疑惑 iPhone 修理 非正規店 グレーゾーン 韓国 中国
根本つとむ 中卒 ブサイク ブス キモい 詐欺師 生活保護
根本つとむ 逮捕 犯罪者 罪状 重要参考人 障害者 アスペルガー症候群
アップルラボ 被害者の会 壊れた おかしい 犯罪 故障 iPhone7 スティーブジョブズ
アップルラボ 脱税 iPad 脱獄 水没修理 MacPro 買取
アップルラボ 誇大広告 2ちゃんねるで宣伝 消費者センター 粉飾決済 恥 ダメ
アップルラボ 迷惑企業 最低 やめて欲しい 中卒 変 創価学会 中国

400NAME IS NULL2017/05/20(土) 18:14:01.91ID:???
>>397
> SqlServerに特化したPowerShellがあるらしいけど
どこの情報?
普通に [Data.SqlClient] 経由で使うのとなにか違うの?

401NAME IS NULL2017/05/23(火) 21:26:20.97ID:id3rm7dy
Hyper-V クラスタ上の仮想サーバー(4コア割当)にSQLServer2016stdをインストールしたとき、SQLServerの必要ライセンスを教えてください

402NAME IS NULL2017/05/23(火) 22:42:33.22ID:???

403NAME IS NULL2017/06/02(金) 21:45:56.38ID:???
SQLはmacでも使えますか?

404NAME IS NULL2017/06/02(金) 22:27:19.41ID:???
>>403
使えない

405NAME IS NULL2017/06/02(金) 22:47:59.88ID:???
SQL自体は使える(書ける)

406NAME IS NULL2017/06/03(土) 17:30:12.42ID:???
じゃやっぱりWinマシンを買うところからってことですね

>>405
使えないということと書けるの違いはどう理解すればいいですか?

407NAME IS NULL2017/06/03(土) 17:57:23.00ID:???
>>406
SQLとSQL serverの違いはわかってる?

408NAME IS NULL2017/06/03(土) 21:38:11.44ID:???
んと、SQLはプログラミング言語で
SQLserverはMS社のデータベース

409NAME IS NULL2017/06/03(土) 21:39:40.29ID:???
>>408
アンカー忘れましたが>>407

410NAME IS NULL2017/06/03(土) 22:28:24.97ID:???
何に混乱しているかというと
SQLserverのWikiを読むと言語はc,c++,c#とある
でも他の本ではSQL自体をプログラミング言語と書いてある
そこでちょっと混乱
https://ja.m.wikipedia.org/wiki/Microsoft_SQL_Server

411NAME IS NULL2017/06/03(土) 22:59:56.99ID:???
その記載ってSQL Serverを作成した言語の話じゃないかな

412NAME IS NULL2017/06/03(土) 23:04:52.90ID:???
>>411
そういうことなのですか
ありがとうございます
ではもとい、Winマシンを買うのは必須ですね

413NAME IS NULL2017/06/03(土) 23:29:53.05ID:???
仮想環境入れて、そこでWindowsを動かすという方法もあるけれど
どういう目的で使うのか、どの位の頻度で使うのかにもよるだろうね

414NAME IS NULL2017/06/03(土) 23:45:52.82ID:???
>>413
会社は普通にWindows機なんで、macは自宅学習用です
プログラミング自体初めてなので家でも勉強しようと思って

415NAME IS NULL2017/06/04(日) 00:09:22.35ID:6QGLXM/f
macはバカが使うものだからバカになりたくなかったら今すぐ捨てた方がいいね

416NAME IS NULL2017/06/04(日) 00:14:22.87ID:???
>>415
そういう煽りには乗りませんので

417NAME IS NULL2017/06/04(日) 00:25:56.60ID:6QGLXM/f
>>416
煽りを装った本音なんだけどなあ

418NAME IS NULL2017/06/04(日) 00:34:24.00ID:???
>>412
必須じゃねーよ

419NAME IS NULL2017/06/04(日) 00:35:50.62ID:???
>>414
MacBookPro15なら、そこそこパワーがあるしMemoryも乗っているから
仮想環境でそれなりに動かす事はできる
それ以外のときはBoot Camp使って、起動を切り替える方が良いかもしれない
SSDだろうから切り換えしてもそれほどストレスにはならないと思う

420NAME IS NULL2017/06/04(日) 00:42:41.51ID:???
>>414
なら仮想環境に入れた方が早いな

421NAME IS NULL2017/06/04(日) 09:26:51.00ID:???
>>419
>>420
ありがとうございます

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

家に仕事持ち込むわけではないので、まずは会社のWindowsで慣れてから再度考えようと思います

422NAME IS NULL2017/06/04(日) 09:35:30.08ID:???
sqlを練習する程度ならmysqlでもいいんじゃないか?
Macでも動くし。

423NAME IS NULL2017/06/04(日) 10:27:16.37ID:???
>>422
そうなんですか!?
前に調べてた時macでも使用可なのがあった記憶がベースで今回の質問に至っておりまして…
それがmysqlだったのかもしれません
ありがとうございます!
まずはそこからやってみます

424NAME IS NULL2017/06/04(日) 14:59:13.80ID:???
>>423
そんなに驚くなよ。
sql server expressはwindows専用だが
それ以外のフリーなdbソフトは大体はMacでも動くんじゃないか?俺はMac持ってないが

425NAME IS NULL2017/06/09(金) 08:22:54.49ID:???
SQLServerのデータファイルの自動拡張がタイムアウトしたってイベントログ出てるんですが
自動拡張時のサイズ小さくすれば解決するもんなのかな?
書き込みが頻発するとディスクアクセスがボトルネックになりそうなんだが

そもそものタイムアウトが発生するところをケアすべきよね
やっぱ

426NAME IS NULL2017/06/09(金) 11:20:11.31ID:???
>>425
自動拡張の初期値はファイルサイズのX%なのでサイズがでかくなるにつれ拡張サイズも増えて処理がタイムアウトするから拡張サイズは固定値にした方が良いよ
ログファイルじゃなくてデータファイルならそもそものデータ見積もりが誤っているという話もあるが

4273832017/06/14(水) 12:27:42.97ID:???
すんません、
「やってみたら?まぁ上手くいくわけないんだけどなwせいぜい絶望してファントム生んでろw誰もエンゲージしねーけどw」
って事かと思って保留してました。

実践していただいた方もいて、助かりました。やってみます。
自分のPCなんで最悪HDDのイメージ取ってから試せば何とでもなるんですけどね。
試行錯誤できる環境を作る時間がなくて。
でもHDDの空き容量もなくて。
そして人生の余裕もない。
もう死にたい。全てが嫌になった。

428NAME IS NULL2017/06/19(月) 23:23:03.91ID:???
SQL2014の自動拡張で質問です。
例えば10MBまたは100MBと指定して拡張されたタイミングまたはログというのは何処で確認できるものでしょうか?

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

ど素人なので的外れな事を書いているかもしれませんが何かヒント頂ければ幸いです。

429NAME IS NULL2017/06/21(水) 01:20:46.92ID:???
SSMSで管理のSQL Serverログとか
OSのイベントビューアでアプリケーションログとかになんか吐いてなかったっけ

430NAME IS NULL2017/06/21(水) 12:19:47.12ID:HMTE/EOf
なんでちょっとMSの中の人よりの言いかたなんだよw

431NAME IS NULL2017/06/21(水) 20:48:17.77ID:???
どの発言がどうMSの中の人よりなのか

432NAME IS NULL2017/06/21(水) 21:12:30.65ID:eFBPC0xl
気になるんだったらもう少し謙虚に聞いたら?

433NAME IS NULL2017/06/22(木) 23:55:36.11ID:???
>>429
ありがとうございます
ご鞭撻頂いた項目で確認したいと思います

434NAME IS NULL2017/06/23(金) 06:45:25.32ID:???
>>433
ご鞭撻?

435NAME IS NULL2017/07/02(日) 11:27:25.38ID:???
鞭打ちの刑

436NAME IS NULL2017/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などは繰り返し発生している

以上のような状況なのですが、
なにかわかる方がいらっしゃったらよろしくお願いします。

437NAME IS NULL2017/07/02(日) 17:37:33.40ID:9thF4go5
>>436
あのな、インデックスがあればインデックススキャンになるわけじゃないんだよ。データによってはテーブルスキャンの方が速い。それを自動で判断した結果がそういうことだよ。

438NAME IS NULL2017/07/02(日) 17:42:57.27ID:???
>>436
UPDATE STATISTICSで統計情報を更新したり、DBCC FREEPROCCACHEで実行プランをクリアするぐらいかね
遅くなる可能性もあるから、事前確認は怠らずにね

439NAME IS NULL2017/07/02(日) 17:51:08.05ID:???
>>437-438
早速の返答ありがとうございます。

かならずしもIndex seekのほうがよいわけではないんですね。
統計情報の更新は調べてやってみることにします。
ありがごうとざいます。

440NAME IS NULL2017/07/02(日) 18:01:02.66ID:???
数万程度ならどんな実行計画でも時間は変わらない可能性大だが、
どうしても拘束しないたらヒント文を追加すれば?

441NAME IS NULL2017/07/02(日) 18:28:22.42ID:???
>>440
ヒント文でインデックスを指定できるんですね。
これでやってみて時間がかわらなそうであれば元の状態で行こうと思います。
ありがとうございました。

442NAME IS NULL2017/07/02(日) 19:24:58.07ID:???
1フィールドだけのテーブルがあって、その1フィールドにプライマリキーが設定されてるのを見るとなんか微妙な気分になるw

443NAME IS NULL2017/07/02(日) 21:27:03.96ID:???
クラスター化インデックスのあるテーブルってテーブルスキャンは発生しないと思ってんだが違うのか
俺の知る限り、テーブルスキャンするところはすべてクラスターインデックススキャンになるんだが

クラスターインデックスのフルスキャンはテーブルスキャンと実質同じだと思うんだが、何が違うんだろ
テーブルスキャンならクラスターインデックスのリーフページだけをたどれる?

444NAME IS NULL2017/07/06(木) 22:57:10.15ID:???
access単体でデータベースを作成するのと、SQLserver+Vbで作成するのは難易度はどのくらい違いますか?

445NAME IS NULL2017/07/07(金) 00:32:55.05ID:???
だいぶ前にミラーリングが非推奨の機能になっちゃったけど、これからはクラスタ作ってAlwaysOnでやるしか無いのかね
今時オンプレかよとは言わないで

446NAME IS NULL2017/07/07(金) 00:49:20.65ID:???
>>444
それだけの内容では色々分からなすぎて
双方の言語経験があるなら差はほとんどない、としか答えられない

447NAME IS NULL2017/07/07(金) 13:53:10.80ID:???
>>445
ミラーリングしたい理由はなによ

448NAME IS NULL2017/07/07(金) 14:15:59.58ID:???
ミラーリング、手軽で便利なのにな

449NAME IS NULL2017/07/07(金) 19:19:13.94ID:???
>>447
Standardのライセンス2つで安価、手軽に二重化出来ること
試しにAlwaysOn構築しようと思ったら、SQLServer外の条件で制約多くて

450NAME IS NULL2017/07/18(火) 22:16:07.37ID:???
SQL Server 2017 Release Candidate 1
https://blogs.technet.microsoft.com/dataplatforminsider/2017/07/17/first-release-candidate-of-sql-server-2017-now-available/

てか2016の次2017なのか…RTMには2018ぎりぎりだったり2018になってたりするんじゃ…

451NAME IS NULL2017/07/19(水) 01:16:59.53ID:???
MicrosoftはどうやってSQL ServerをLinuxへポートしたか、ついに2017リリース候補がローンチ
http://jp.techcrunch.com/2017/07/18/20170717how-microsoft-brought-sql-server-to-linux/

452NAME IS NULL2017/07/19(水) 07:37:48.82ID:???
>>449
AlwaysOnは知らんが、ミラーリングの場合、待機側はライセンス要らないよ

453NAME IS NULL2017/07/19(水) 10:59:44.53ID:???
ますますミラーリングから離れられないわな
AlwaysOnは1台につき1ライセンス必要だし

454NAME IS NULL2017/07/20(木) 00:52:16.15ID:???
ミラーリングでライセンスいらないのは、完全に待機のみの場合だけだったはず
ダウンタイムの短縮には役に立つけど、負荷分散には使えないぞ

455NAME IS NULL2017/07/20(木) 09:59:09.19ID:???
ミラーリングは負荷分散に使えないが

456NAME IS NULL2017/07/27(木) 22:18:19.62ID:Wb6w4MLZ

457NAME IS NULL2017/07/31(月) 21:23:54.39ID:???
SQL Server絡みの地雷率が高すぎてうんざりしてきた
windowsしか使えないのでこれ使いました!
プログラムはよくわかんないので中身は適当です!
十数年分の滅茶苦茶に蓄積されたデータは再利用できるようにしてください!
みたいのしかねえ

458NAME IS NULL2017/07/31(月) 21:46:50.58ID:lcWS9MWM
>>457
知識の蓄積もない、Microsoftは利用者を育てることが重要だと思ってないからな。

459NAME IS NULL2017/08/01(火) 02:12:40.31ID:???
>>458
サポート費用払う前提だがそれなりの対応してると思う
何か問題でもあったのか?

460NAME IS NULL2017/08/01(火) 08:09:16.36ID:???
>>457はMSをディスってるんじゃなくてその利用者をディスってるんだろ
むしろそんな連中でもとりあえずのシステムが組めるMS製品群スゲーって話
まあ引き継ぎとかでうんざりする気持ちはよくわかるが w

461NAME IS NULL2017/08/01(火) 10:39:33.77ID:???
>>460
とりあえずじゃないからSQLServerの地雷案件が多いんだよな
設定もろくにせずに遅くなったら魔法の言葉「MSの製品だからしょうがない」で誤魔化そうとする阿呆多すぎる

462NAME IS NULL2017/08/01(火) 10:45:07.93ID:XS4cIuUu
>>459
日本マイクロソフトのサポートもレベルがひどい

463NAME IS NULL2017/08/01(火) 12:48:27.45ID:???
>>461
いちゃもんつけたいだけのアホ乙 w

464NAME IS NULL2017/08/01(火) 13:30:45.92ID:XS4cIuUu
>>463
日本ユニシスおつ

465NAME IS NULL2017/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にトリガを仕掛ければ問題なくやりたいことは出来るのですが。
ビューのトリガを動かすのには何か設定が必要なのでしょうか。

466NAME IS NULL2017/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

467NAME IS NULL2017/09/09(土) 20:49:58.88ID:???
実際酷いのもいるけど、そういうのはむしろORACLE出身だったりするw(内部結合のビューのみでやりきろうとする信じられない低レベルもいる)
SQL Serverは同一ストアド内に制御文と問合せ文が同居できるため工夫の範囲が広く、むしろORACLEよりレベルの高い技術者も多いとも聞く

いずれにせよ前任者はそれを0から構築したわけで(おそらく低予算で)、前任者が悪いんでなく、引き継げない後任者のレベルが低いと考えるべき
前任者のレベルが低いと言うならむしろ引き継ぐだけでなく改善して、処理速度を数十倍〜数百倍に上げてみせるべき

468NAME IS NULL2017/09/27(水) 13:50:33.70ID:WjHJ/OaP
復旧モデルについてなのですが、「完全」よりも「単純」の方が余計なことをしない分
処理速度自体は総じて速いという認識で良いのでしょうか?

469NAME IS NULL2017/09/27(水) 15:25:41.88ID:???
>>468
差が出るのは最小ログ記録が有効になる操作のみ
https://technet.microsoft.com/ja-jp/library/ms191244(v=sql.105).aspx

470NAME IS NULL2017/09/27(水) 19:15:37.86ID:???
>>468
処理速度はほとんど変わらないけど、完全はトランザクションログのメンテナンスを疎かにしてトラブル起きやすいイメージ

471NAME IS NULL2017/09/27(水) 22:49:22.28ID:???
単純でもトランザクションのロールバックはできるわけだから、ログは取ってるんだが
一括ログ可能な操作だと、単純でも一括ログ方式の最少ログしか取ってないのかな

そうじゃないなら、速度的には一括ログが一番早いんじゃないんじゃね
体感できるとは思えんけど

472NAME IS NULL2017/09/28(木) 01:01:37.66ID:???
バッチ処理で大量にデータを
ローディングするようなシステムではそれなりに差が出るよ
BULK INSERTでだいたい20~25%くらい短縮できる

473NAME IS NULL2017/09/29(金) 16:50:08.86ID:???
>>472
完全と一括ログの比較じゃなくて
単純より一括ログの方が早いって話?

474NAME IS NULL2017/09/29(金) 23:26:37.10ID:???
>>473
単純は一括と同じでしょ
そこは試してないけどマニュアルにはそう書いてるよ

475NAME IS NULL2017/10/04(水) 21:53:17.22ID:???

476NAME IS NULL2017/10/05(木) 09:42:17.95ID:???
まだ2012R2なのに

477NAME IS NULL2017/10/05(木) 20:59:09.87ID:???
まだ2005が現役で動いているのに

478NAME IS NULL2017/10/05(木) 21:56:52.98ID:???
>>477
それはヤバくね?

479NAME IS NULL2017/10/05(木) 22:00:44.94ID:???
>>478
保守契約切れても何も言ってこないので他社システムに移行したと思ったら、単にケチってただけだったという・・・

480NAME IS NULL2017/10/06(金) 22:25:21.69ID:???
うちの社内システムなんてSqlServer2000+VB6だぞw

481NAME IS NULL2017/10/07(土) 14:58:41.23ID:???
安定稼働してるDBMSを変更する理由がないからなぁ
ORACLEとかサポート切れたら不安しかないけど

482NAME IS NULL2017/10/07(土) 17:00:02.65ID:???
>>481
セキュリティって知ってる?

483NAME IS NULL2017/10/07(土) 17:07:32.43ID:72uw01jP
格好の標的だね
metasploitみたいの使って簡単に攻撃されるよ

4844802017/10/07(土) 17:54:07.20ID:???
>>481
そういやいまだにoo4o使ってるシステムもあったw

485NAME IS NULL2017/10/07(土) 17:57:44.46ID:???
>>484
うちのこと?

486NAME IS NULL2017/10/08(日) 22:37:59.43ID:???
そもそもDBに不特定多数が直接接続できるシステムがまれだと思うが

487NAME IS NULL2017/10/08(日) 22:42:53.11ID:XmeriWwC
そもそもそういう発想がセキュリティを理解してない

488NAME IS NULL2017/10/08(日) 22:43:14.23ID:???
いやまあSQL Slammerみたいな例もあるから何とも言えんけど
DBサーバそのものがネットワークに晒されてるような環境とそうじゃない環境じゃ
求められるセキュリティ強度も違うんじゃないかね

489NAME IS NULL2017/10/09(月) 06:16:11.40ID:???
>>486
DBに(社内の)不特定多数が直接接続できるのはまれだと思うがDBが入ってるサーバーに(ログインはできないけど)直接接続できるケースは多いと思うぞ

490NAME IS NULL2017/10/09(月) 09:17:26.00ID:???
別サーバーからSSMSからは接続出来ないのに
sqlcmdからは操作出来ちゃうアホな設定のDBがあったなあ

491NAME IS NULL2017/10/09(月) 15:57:30.46ID:???
>>490
そんな設定できるんだっけ?

492NAME IS NULL2017/10/09(月) 17:49:41.05ID:???
>>490
技とそういう設定にしてるんじゃないか?

493NAME IS NULL2017/10/16(月) 09:56:16.87ID:cuhMHRkq
SSMSの最新版が出ているようですが、入れると何か良い事ありますか?

494NAME IS NULL2017/10/18(水) 23:00:33.28ID:???
病気が治って彼女が出来て宝くじに当たって出世しまくるなどいい事ずくめ

495NAME IS NULL2017/10/21(土) 12:57:32.75ID:???
Queryのウインドウでは、色付きで分かり易くクエリが表示出来ますよね。
コピペしてワードなどに貼り付けるとその色情報が失われますが、
どうにかして文字だけでなく色もコピペできませんか?

496NAME IS NULL2017/10/21(土) 13:11:28.80ID:???
>>495
文法読み取って色表示しているのがクエリエディタの機能だから無理じゃね

497NAME IS NULL2017/10/21(土) 14:17:38.53ID:???
>>495
同じ機能を持ったテキストエディタに張り付ければいいじゃん

498NAME IS NULL2017/10/21(土) 17:12:43.60ID:???
例えば社員テーブルに複数の社員のデータを一気に追加する場合に
社員番号をキーとして、
もしテーブルに該当社員がいればUpdate、
いない場合はInsertしたいのですが、
そう言う処理を簡単にやるコマンドはありますか?

499NAME IS NULL2017/10/21(土) 17:19:04.06ID:???
>>498
MERGE

500NAME IS NULL2017/10/21(土) 17:19:21.04ID:VrrtTrmz

501NAME IS NULL2017/10/21(土) 17:57:32.74ID:???
ありがとうございました。

502NAME IS NULL2017/10/21(土) 21:16:04.76ID:???
>>495
「形式を選択して貼り付け」じゃないの?
rich text formatでクリップボードにはコピーされてるはず

その後、mergeをいろいろ試しています。
社員更新データを#で始まるローカル一時テーブルに入れておいて、
社員テーブルにマージする方針で出来たのですが、そのやり方で良いでしょうか?
調べていると、Temporal tablesと言うのもあるようですが今回のマージ処理に使うと何か良い事ありますか?

一時テーブルは大量データには向かない
更新頻度が低いならまあ

>>504
sqlserver上級者の人ならどういう手法を使うのか教えて下さい。

そもそも一旦一時テーブルに入れる必要性が分からんのにどういう手法とか言われても困るだろうよ

##付きも一時テーブル?

>>503
名前紛らわしいけど
temporary tableとtemporal tableは全く別物

テンポラリテーブルは一時テーブル
テンポラルテーブルは決まった日本語訳ないけど”時間テーブル”みたいな意味
バージョン管理や履歴管理のために使う

>>505
なら目的とか要件を提示しろよ

510NAME IS NULL2017/10/22(日) 21:45:55.65ID:???
>>506
テーブルに入れずにmergeできる?

511NAME IS NULL2017/10/22(日) 21:48:59.23ID:???
できる

512NAME IS NULL2017/10/22(日) 21:51:05.13ID:???
>>511
ちょっと書いてみてよ。

513NAME IS NULL2017/10/22(日) 23:17:00.45ID:???
>>512
マニュアル読めよ
ダメな子だな

514NAME IS NULL2017/10/23(月) 12:22:06.75ID:???
他は知らんがSQLServerのmergeはただの場合分けでupdateとinsert書いてるだけなんだから
updateとinsertに書けることは大体書ける

515NAME IS NULL2017/10/23(月) 12:44:14.56ID:???
>>513
あっ、逃げた w

516NAME IS NULL2017/10/23(月) 15:13:53.67ID:???
>>515
マニュアルに例も含めてまんま書いてるのにそれすら読めないのか?
仕事でデータベースさわってるなら今すぐ辞めろ
みんなが迷惑する

517NAME IS NULL2017/10/23(月) 15:27:52.10ID:???
505辺りから質問者とは別の人だろ

518NAME IS NULL2017/10/23(月) 15:28:32.51ID:CzSV0ugc
普通のワークテーブルも作ったらいけない決まりがあるのか?

519NAME IS NULL2017/10/23(月) 21:08:58.07ID:???
>>516
具体的に書けないなら黙ってろよ
マジでウザイわ

520NAME IS NULL2017/10/23(月) 21:11:50.12ID:mf1jBI9V
データの途中経過も分からない作りにしたい人はどういう感覚なんだろうね。

521NAME IS NULL2017/10/23(月) 21:58:30.84ID:???
>>517
503の書き方からして同一人物だろ

522NAME IS NULL2017/10/29(日) 00:25:48.63ID:???
SQL Serverの操作に特化したPowerShellがあるって聞いたんだけど
このスレには使ってる人いないのかな?
SSMS使えない環境だとそれなりに威力を発揮するのか知りたかったのだが

523NAME IS NULL2017/10/30(月) 22:53:25.46ID:0uDb1bS4
壊滅的にcliのセンスがないmsにそんな期待するだけ無駄

524NAME IS NULL2017/10/30(月) 23:07:01.23ID:???
sqlserverでpowershell使っている人いないだろ

複数のsqlserver運用している人がサーバ設定いちいち手作業でするのが面倒くさい場合設定変更のスクリプトをpsで作ったり

あるいはベンダーがクライアントの設定を変えたい時psでスクリプト作ってクライアント送って実行してもらうとかじゃね

525NAME IS NULL2017/10/31(火) 11:37:21.58ID:IzoEenp0
>>524
SQL Serverそのものが、PowerShellのスクリプトを吐くんだが?

526NAME IS NULL2017/10/31(火) 12:30:18.27ID:???
>>525
>SQL Serverそのものが、PowerShellのスクリプトを吐く
kwsk
どこでどんなスクリプト吐くんだ
それはクライアントツールじゃなくてSQL Serverそのものが吐いてるのか?

527NAME IS NULL2017/10/31(火) 13:10:45.30ID:IzoEenp0
>>526
management studio

528NAME IS NULL2017/10/31(火) 17:24:38.56ID:???
>>527
SSMSがどんなサーバ設定のスクリプト吐くの?

まあそもそもSSMSはクライアントツールであって、それがPSスクリプト吐いたからって、SQL ServerそのものがPSスクリプト吐いてるわけじゃないんだけど

529NAME IS NULL2017/10/31(火) 20:58:07.94ID:???
かなり古い記事だが・・・

【管理効率化への挑戦】PowerShell × SQL Serverが実現する"新しいDB管理"
http://news.mynavi.jp/articles/2010/05/19/ps_u/

530NAME IS NULL2017/10/31(火) 22:56:42.42ID:???
教えてください。

他のジョブの状態によって特定のジョブを実行するかどうかを判定するストアドを書きたいと思います。
ジョブの状態は システムのストアドの msdb.dbo.sp_help_job を利用することで取得できます。
これの特定のカラム(current_execution_status)の値を参照したいので一時テーブルに結果を保存しました。

insert into #temp
exec msdb.dbo.sp_help_job;

これを単体で実行する分には問題ありませんが、自作のストアドの中で実行すると
「INSERT EXEC ステートメントは入れ子にはできません」とエラーが発生します。

無視しても一時テーブルには結果が保存されるのですが、あまり気持ちよくないことと、
自作のストアドをトリガなどの中で実行すると例外を捕捉されてそこで終わってしまいます。
ので、対策を行いたいと思います。

1) 諦める
2) msdb.dbo.sp_help_job の中身を解析して自作する
3) SQL CLR で msdb.dbo.sp_help_job の結果を返すファンクションを作る?

どちらもなんだかな、な気がします。
ネットを見る限りではこのストアドを使用した記事は多そうなので、使用事例も多いはずなのですが解決策が見つかりません。


問題は、内部で insert into を使用しているストアドの結果を insert into するとエラーが発生することなのですが、
こういうケースでは一般にどのように対応するのが定石なのでしょうか。

531NAME IS NULL2017/10/31(火) 23:03:51.74ID:???
>>530
ストアドをテーブル関数化すればselect使えるからうまくいくかも

532NAME IS NULL2017/10/31(火) 23:48:42.51ID:???
とりあえずエラートラップして握りつぶせば良いんじゃね

533NAME IS NULL2017/10/31(火) 23:57:22.70ID:???
>>530
https://stackoverflow.com/questions/653714/insert-results-of-a-stored-procedure-into-a-temporary-table

sp_help_jobの結果をテーブルに保存するのは出来るけど
ジョブの依存性管理はSSISかサードパーティのジョブスケジューラ使わないとキツイよ
スケジュール調整のたびにスクリプト自体に手を入れることになるからすぐ破綻する
SQL Serverの泣き所

5345302017/11/01(水) 22:25:35.36ID:???
みなさん、ありがとうございます。

>>531
自分のスキルでは出来ませんでした。。

>>532
try catch で握りつぶすってことですよね。
それをやると件のエラーが出たところで catch の側に行ってしまうので、結果がテーブルに保存されないのです。

>>533
教えていただいた URL の手法で出来ました。
ただ。本番機の設定を変更せねばならないのですが、NG を出されました。
残念。無念。

スケジュール調整の件、覚えておきます。
今回のは幸いに単純なのでなんとかなりそうなのですが。すっきりしないなぁ。

535NAME IS NULL2017/11/09(木) 01:07:32.60ID:???
初心者です。
二つのテーブルが有って、その両者に同じ名前のカラムが有って、それらはそれぞれプライマリキーに設定されています。
その二つのテーブルをマネージメントスタジオでダイアクラムを表示してリレーションシップで結びます。
これで外部キーの設定が出来たと思ったのですが、そうでは無いようでした。
外部キーの設定には、また別の操作が必要でした。
ここで疑問なのですが、二つのテーブルをダイアクラムでリレーションシップの線を結んだだけの状態は、どういう状態なんですか?

536NAME IS NULL2017/11/09(木) 12:30:07.76ID:3vuEsp4f
見てのとおり、二つのテーブルをダイアクラムでリレーションシップの線を結んだだけの状態、です。

537NAME IS NULL2017/11/09(木) 13:09:26.62ID:???
>>536
なるほど。
その場合、リレーションシップを結んでいるかいないかで
それらのテーブルに対するSQLの結果が異なる場合はありますか?
つまり単に線で結んでいるだけなら、SQLには影響しないと考えて良いですか?

538NAME IS NULL2017/11/09(木) 13:19:48.42ID:???
SQL欄表示すりゃ何してるか分かるよ

539NAME IS NULL2017/11/10(金) 10:43:05.09ID:???
SQLServerというよりか、ManagementStudioの話なんですが
ビューの作成や保守が死ぬほど使いづらいです。

ダイアグラムペイン、抽出条件ペイン ともに要らなくてSQLペインのみで作業しようにも
タブ入らないし、保存後に開き直すと勝手に整形されるし・・・

ストアドの作成/保守するときと同じく
CREATE(ALTER) VIEW 〜 っていう画面にできないんでしょうか。

540NAME IS NULL2017/11/10(金) 12:10:30.05ID:???
>>539
もう全部コードで書きなよ。

541NAME IS NULL2017/11/10(金) 12:56:12.39ID:???
新規クエリタブ開いてコピペしろ
アホらしいがこれが一番早い

542NAME IS NULL2017/11/10(金) 13:18:24.75ID:???
新規に作る分にはいいんですが
以前に作ったビューの手直しをするとき
SQL文を勝手に整形するのだけでも止められないですかねぇ

543NAME IS NULL2017/11/10(金) 13:22:51.03ID:???
ムリダナ(・x・)

544NAME IS NULL2017/11/10(金) 18:53:31.86ID:???
普通viewなんかexcelの計算式でviewのsql文作ってコピペで張り付けて作るだろう
項目数が100以上あろうがexcelのファイル定義書があれば数分でできるぞ

545NAME IS NULL2017/11/10(金) 18:57:49.31ID:+oA2Me4B
エクセルにsql作れる関数なんかあったっけ?

546NAME IS NULL2017/11/10(金) 19:42:05.74ID:???
>>545
関数はない計算式だよ

例えば、excelのA列にカラム名
B列に別名があったら
C列1行目に=",["&A1&"] AS ["&B1&"]"
と計算式を1つ作り下へコピーすれば
カラム部分のSQL文が簡単にできる
sumしたいカラムとかも計算式を工夫すれば簡単にできる。

547NAME IS NULL2017/11/10(金) 21:18:25.39ID:5FHSQ6Bb
そういう話ではない。初心者なのかSQLスクリプトを使用する習慣がないようだよ。

548NAME IS NULL2017/11/15(水) 10:18:50.96ID:6Q/c6Tcb
LEFT JOINする時に、両方のテーブルに例えば共通のidと言うカラムがあると、
select * from T1 left join T2 on T1.id = T2.id;
を実行すると、idのカラムが二個出て来ますよね。
それを一個にするにはどうしたら良いですか?
select * をやめて必要なカラムを書き並べて取り出すしか無いですか?

549NAME IS NULL2017/11/15(水) 10:42:03.36ID:???
はい

550NAME IS NULL2017/11/15(水) 10:51:52.76ID:???
>>549
そこを何とかお願いします

551NAME IS NULL2017/11/15(水) 11:44:10.62ID:???
内部結合ならともかく、外部結合だと
その二つは違う場合があるんだが

552NAME IS NULL2017/11/15(水) 11:48:01.92ID:???
だな

553NAME IS NULL2017/11/15(水) 12:19:38.98ID:2A3D0a21
で?

554NAME IS NULL2017/11/15(水) 12:29:05.63ID:???
>>548
select T1.* ,T2.hage1 ,T2.hage2 from T1 left join T2 on T1.id = T2.id;
とか T2だけカラムを羅列する

555NAME IS NULL2017/11/15(水) 12:43:55.38ID:LwMIMZHH
また自演か

556NAME IS NULL2017/11/15(水) 14:31:55.25ID:6Q/c6Tcb
>>554
>select T1.* ,T2.hage1 ,T2.hage2 from T1 left join T2 on T1.id = T2.id;
ありがとうございました。
ところで、
select T1.* ,T2.*(not hage3) from T1 left join T2 on T1.id = T2.id;
みたいな書き方はSQLでは出来ませんか?

557NAME IS NULL2017/11/15(水) 14:34:51.14ID:???
>>556
試してみれば?

558NAME IS NULL2017/11/15(水) 22:24:07.29ID:???
>>556
お前は髪が薄い俺を怒らせたから教えない

559NAME IS NULL2017/11/16(木) 09:20:05.84ID:???
>>558
少し工夫したら出来ました。

560NAME IS NULL2017/11/16(木) 12:27:44.35ID:RhBRQtps
ハゲの事を薄毛って言うの本人だけ説

561NAME IS NULL2017/11/23(木) 21:49:46.78ID:???
質問なのですが
sqlcmdやbcpでリモートのSqlServerにログインする場合
パスワードを何度も間違えても特にロックアウトされたりとかはしないですよね?

562NAME IS NULL2017/11/23(木) 21:55:28.92ID:???
>>561
Windows認証ならADやPCのローカルポリシーでパスワードのロックアウト設定引き継ぐことはあるよ
sa認証は予め設定する必要あるけど

563NAME IS NULL2017/11/24(金) 22:42:10.74ID:???
マイクロソフトのサイト行くとSqlServerのサンプルデータベースとして
「AdventureWorks」ってのが出てくることが多いんだけどあれって昔からあるよね?
あれの元ネタというか由来ってなんなのかな?

5645632017/11/27(月) 04:37:45.34ID:???
誰もわからんか・・・
自分も調べたけどわからなかった・・・orz
Accessにも出てくるし、20年来の謎

565NAME IS NULL2017/11/27(月) 08:17:32.83ID:???
サンプルだからテキトーに付けた名前だろ
下手に実在の会社と被ると色々面倒だからそこら辺は調べてるとは思うけど

566NAME IS NULL2017/11/27(月) 17:09:44.64ID:k8i9IH/m
AdventureWorksだと、ただの検証用という意味で、何のひねりもない。

567NAME IS NULL2017/11/29(水) 06:41:31.17ID:???
変わるらしいぞ

https://blogs.msdn.microsoft.com/dataplatjp/2016/06/23/sql-server-2016-changed/
「今まで慣れ親しんだ AdventureWorks ではなく、Wide World Importers が今後のサンプルのメインストリームになります」

568NAME IS NULL2017/11/29(水) 17:56:41.10ID:???
>>567
そんな情報良く気付くなあ。感心

569NAME IS NULL2017/12/04(月) 22:24:53.03ID:???
SSMSってインストールしたユーザーならWindows認証は必ず通れると思っていたんだけど
入れないって連絡きたけどそんなことってあるのか?

570NAME IS NULL2017/12/04(月) 22:27:52.00ID:6wISNT0k
INSERTやMERGEでは
VALUES ( values_list)
で沢山の値を指定出来ますが、生成されるSQL文は何文字以内などの制限はありますか?
例えば一気に100万件くらいのデータを追加しても正常に動きますか?
何らかの制限があれば教えて下さい。

571NAME IS NULL2017/12/05(火) 13:21:31.06ID:???
>>569
結構前のVerだとインスコ時に明示的に追加してやらんとならんかったような

>>570
1ステートメントあたりの文字数制限はあった気がする
それ以内なら何千万行でも問題ない

572NAME IS NULL2017/12/05(火) 14:41:05.87ID:???
SSMSをインストールしたら誰でもDBにログインできるってなら
俺のPCは世の中の全てのSQL Serverにつながるのかね

573NAME IS NULL2017/12/05(火) 19:19:58.29ID:75Z5+bpM
>>572
どういうバカの思考回路だとそんな結論になるのかちょっとだけ気になるよ

574NAME IS NULL2017/12/05(火) 19:47:15.06ID:???
他人の夢の中にログインできるDC mini が欲しい

575NAME IS NULL2017/12/05(火) 19:58:36.60ID:???
>>573
>SSMSってインストールしたユーザーならWindows認証は必ず通れると思っていた

576NAME IS NULL2017/12/05(火) 20:20:32.04ID:75Z5+bpM
>>575
ああそうか「ユーザー」をキミ自身のことだと考えたわけか
なかなか新鮮な文脈解釈だと思うよ

577NAME IS NULL2017/12/07(木) 13:42:17.87ID:l7erEtxE
LinuxでSSISをインストールしたいんだけど、エディッション選択で何を選んでも
”Could not write Licensing information”と出て先へ進めない。

SQL Server本体の時はDevelopper Editionを問題なくインストールできたのになんでよーー

578NAME IS NULL2017/12/07(木) 18:44:45.88ID:IMylgnN4
>>577
エラーメッセージを素直に解釈すれば、パーミッションの問題たろうに。

579NAME IS NULL2017/12/08(金) 08:11:01.53ID:???
>>571
バージョン聞くの忘れたけど多分2008か2012なんだよね
調べてみます
ありがとう

580NAME IS NULL2017/12/08(金) 16:45:10.45ID:???
>>81
>>390
昨日現象が出て、今スレ開いたらそのものずばりの人がいてやったーと思ったらまだ解決してねえ!

581NAME IS NULL2017/12/11(月) 17:55:36.58ID:ExZ8B70/
【ブーメラン】漫画家(27)「放射脳は無知」→急死 (;゚Д゚) アニメーター(39)「政府は正しい」→急死
https://rosie.5ch.net/test/read.cgi/liveplus/1512349462/l50
【ナニコレ】早朝死亡2名、マクド死亡2名、バンド死亡3名→皆30日、マラソン危篤3名、柏市隣2名
https://rosie.5ch.net/test/read.cgi/liveplus/1512269420/l50

582NAME IS NULL2017/12/13(水) 21:30:09.63ID:???
全くの無知からSQLサーバーの担当になりました。
データベースからデータを引っ張ったりして資料作成する業務なんですが、いい勉強方法ありませんか?
引き継ぎも無しに任されたので混乱してます

583NAME IS NULL2017/12/13(水) 21:43:37.22ID:???
>>582
とっつきやすいのはMSの自習書あたりかね

584NAME IS NULL2017/12/13(水) 22:55:55.46ID:???
作成したDBをSSMSで削除したいのですが、使用中で削除出来ない場合があります。
最悪、サーバーを再起動すれば削除出来るんですが、簡単に削除する方法はありますか?

585NAME IS NULL2017/12/13(水) 23:46:30.65ID:???
接続してるユーザ全部落とせばいけるんじゃね

586NAME IS NULL2017/12/14(木) 00:01:59.92ID:???
>>585
誰も接続してないんですが、

587NAME IS NULL2017/12/14(木) 00:02:51.71ID:???
>>586
某ブログで紹介してたこのスクリプト使ってる
https://kashfarooq.wordpress.com/2013/02/20/how-to-force-sql-server-to-drop-db-connections/

588NAME IS NULL2017/12/14(木) 12:19:58.71ID:???
>>586
それあかんやつやろ
ハッキングされとんで

589NAME IS NULL2017/12/14(木) 12:51:38.09ID:???
SMS 17使っていて、更新があると出るのでクリックするとダウンロードサイトが開くが
通常のインストーラーしか見当たらない。Updateはどこにあるの?

590NAME IS NULL2017/12/15(金) 10:10:54.10ID:???
>>584
使用状況モニターから掴んでいるプログラムを強制終了

591NAME IS NULL2017/12/17(日) 22:23:55.62ID:???
c#でEFの質問はここでしょうか?

592NAME IS NULL2017/12/17(日) 22:38:01.11ID:???
どんな思考経路でそんな結論に至ったのか

593NAME IS NULL2017/12/17(日) 22:54:35.12ID:???
同じMSだからだよ。それくらい気付けよな。

594NAME IS NULL2017/12/17(日) 23:06:11.41ID:???
>>591
こっちだけどEFじゃろくな回答貰えないと思う
https://mevius.5ch.net/test/read.cgi/tech/1511872248/

595NAME IS NULL2017/12/18(月) 10:37:47.27ID:???
ライセンスの話で恐縮ですが

SQL Server2016のライセンスを解説します
http://sql-oracle.com/sqlserver/?p=363



1.SQL Server 2016 Standard 4コア 1,017,000円
2.SQL Server 2016 Standard 日本語版 サーバー ライセンス 111,000円
3.SQL Server 2016 クライアント アクセス ライセンス(1CAL) 27,000円

という参考価格が出てます。実際の価格は別にして、4コアのサーバーで運用するとき

(1017,000-111000)÷27000≒33.6

と求まり、つまり34ユーザー以上だったら、1. で買った方が得、ということで合ってますか?
実際のクライアント数は50台ちょっとです。

596NAME IS NULL2017/12/18(月) 11:20:20.87ID:???
>>595
msに聞けよw

597NAME IS NULL2017/12/18(月) 11:39:53.12ID:???
グループ会社が絡む複雑な話だったらマイクロに相談するけど
よくある中小企業のサーバー1台、クライアント50台ちょっと、という実に普通の話だもんで

598NAME IS NULL2017/12/18(月) 19:01:41.72ID:WUe68RNI
グループ会社が絡んでも別に複雑じゃないけどクロソにはとりあえず相談するだろ

599NAME IS NULL2017/12/18(月) 19:04:02.94ID:???
>>595
コアライセンスのがいいね
ただ今後SQLServer増やす予定があるならcalは他のサーバーでも
使えるのでサーバーcalライセンスのほうがいい

600NAME IS NULL2017/12/18(月) 19:10:55.79ID:???
その辺りのライセンス云々は富士通とかベンダ解説資料がぐぐると良く引っかかるよね
同じようなことしたけど、VL価格とか出てくると更に訳がわからなくなって辛かった記憶有るわ

601NAME IS NULL2017/12/27(水) 13:39:13.96ID:???
ALTER TABLE テーブル名
SET ( LOCK_ESCALATION = DISABLE )

やってもエスカレーションするぽいんだが
データベースエンジン再起動させないと反映されないの?

begin transaction
update テーブル set 項目=なんとか where 主キー=XX
select 項目 from テーブル where 主キーじゃない項目 = YY  ← これが通らない

ちなみに

select 項目 from テーブル with (nolock) where 主キーじゃない項目 = YY

だと当然にして即座に通る

602NAME IS NULL2017/12/27(水) 13:43:23.90ID:???
ちなみに 主キーじゃない項目 = YY は 主キー=XX とは全く別レコード

2行目のupdateした直後にロックのかかり具合を見ると
type=PAGE、request_mode=IX と type=KEY、 request_mode=X
がそれぞれ、数個出現してる

603NAME IS NULL2017/12/27(水) 19:25:55.49ID:lvRR+7xm
SELECTで行ロックしたいのかどうかがわからない。

あなたの説明だと行ロックしたいのか、ただロックエスカレーションをどうにかしたいのか、なんだかわからない。

604NAME IS NULL2017/12/27(水) 20:08:35.42ID:???
>>74-79
この辺に、Accessファイルをリンクサーバで使う話が出てますけど、SQLServerが64bitでAccessが32bitの時の方法を知っている方いませんか
SQLServerも32bitならできることは確認しています
> ACE.OLEDBってのがあって、これは64ビット版もある
これも試してみましたが、うまく使えていません
動作確認のために純粋な64bit環境を用意してみようとも考えていますが、Officeはしばらく32bit版を使う必要があるので、純粋な64bit環境に移行は当分できません
アドバイスをお願いします

605NAME IS NULL2017/12/27(水) 21:12:25.91ID:???
>>604
ここみて32bitのAccessDatabaseEngine.exeをインストールすればよい
http://plus-sys.jugem.jp/?eid=446

officeの64bitが入ってたら一旦アンインストールすれば普通にインストールできる

606NAME IS NULL2017/12/27(水) 21:23:20.87ID:FlxrmEMU
>> 602
ロックエスカレーションを止めたかどうかまずは確認しろ
https://www.projectgroup.info/tips/SQLServer/MSSQL_00000016.htmlhttps://www.projectgroup.info/tips/SQLServer/MSSQL_00000016.html

607NAME IS NULL2017/12/27(水) 21:39:07.90ID:???
>>605
ここのリンク先は参考にならないわ
sqlserverやosのbitは無視して使いたいaccessファイルのbit基準でAccessDatabaseEngine.exeを
msからダウンロードしてインストールすればよい

608NAME IS NULL2017/12/28(木) 02:48:09.70ID:???
>>605>>607
Officeが既に32bit版なので、32bit版のACE.OLEDBは入っていたので、32bit版のAccessDatabaseEngine.exeはインストールしたことはありませんでした
試してみます
レスありがとうございました

609NAME IS NULL2017/12/28(木) 03:10:35.02ID:???
普通に32ビットのACCESS入れたら
32ビットのSQLServerクライアントも入ったと思ったがなぁ

610NAME IS NULL2017/12/28(木) 03:25:09.72ID:???
もしかして、SQLServerからACCESS(のデータベース)にリンク張りたいって話か?
だったらSQLServerと同じビット数のACE入れないとダメだぞ

SQLServer(64ビット)入れたサーバに、32ビットACCESSも入れたらなら
ACEの64ってサポートされてないはず

どうしてもやりたいなら>>605のリンク先

611NAME IS NULL2017/12/28(木) 03:44:32.78ID:???
>>601
ALTER TABLEでLOCK_ESCALATION = DISABLE したとしても
ロックエスカレーションが完全に禁止されるわけじゃないぞ

そもそも、そのselectとupdateは同じトランザクションなのか?
分離レベルは何でやってるのとか色々考慮点はあるんだが

612NAME IS NULL2017/12/28(木) 04:16:09.80ID:???
>>602
インテントロックは行レベルで取得されない気がしたんだがなぁ
そもそも、ページにIXかかっても、そのページにIXロックかけれるんだぜ
(もちろん行単位のロックが競合しないとか条件はあるが)

6136012017/12/28(木) 09:30:08.82ID:???
>>603 >>611
selectは行ロック不要です。

ただ問題としたいのは
最初のupdateにより、その1行はロックされるのは当然にして
全く別の行のSELECTができなくなる(ロックされて読めない)、っていう挙動が解せないという話です。

たった1行のupdateに対して、かなり広範囲にロックかかってる気がしてならないのです

614NAME IS NULL2017/12/28(木) 09:33:45.08ID:???
一つ考えられるのは、
updateで1行を更新するとき、その項目はインデックス(非クラスタ)の一部になってます。

まさかインデックスに使われている項目を更新すると
さながらテーブルロックのような状態になるなんてことないですよね?

615NAME IS NULL2017/12/28(木) 13:00:00.38ID:???
>>614
インデックスの項目更新したらインデックスの再構成しないと遅くなりそう
インサートとデリートでインデックス項目変更したほうがいいんじゃね

616NAME IS NULL2017/12/28(木) 16:51:57.21ID:???
>>613
だからIXロックはIXロックをブロックしない
IXロックがブロックの直接の原因じゃない

たとえばファントムリード防止したかったら、範囲ロックせざるを得ないんだが
そのあたり理解してる?

617NAME IS NULL2017/12/28(木) 19:28:33.72ID:???
>>605>>607>>609>>610
自己解決できました
32bit環境で機能していたのは確認していましたが、32bit版のACE.OLEDBはなくJET4.0だったので、32bit環境でACE.OLEDBでためしたところうまき行きませんでした
結果は、64bit環境と同じエラーで、セキュリティの問題でした
JET4.0では使えるのにACE.OLEDBではダメと言う状況で、SQLServerの実行アカウントをネットワークサービスアカウントではなく、ローカルのユーザにして対応できました

618NAME IS NULL2017/12/29(金) 09:16:03.77ID:FyU/cwrw
>>615
素人は口出すな

619NAME IS NULL2017/12/29(金) 09:20:54.56ID:FyU/cwrw
>>613
それぞれ別レコードで、かつUPDATE、SELECTの順に行う理由がわからない。

別のレコードであればSELECTしてから、UPDATEでもいいんじゃないのか?

またはUPDATEしたあとにコミットしてからSELECTすればいい。

620NAME IS NULL2017/12/29(金) 10:08:58.24ID:???
>>614
nolockオプションつけてやってみれば?
ただし一瞬消えてしまうようですがリンク参照
http://bxdxmx.hatenablog.com/entry/20090828/1251444766
内部的にはdelete とinsertでやってるからロックされているかも

621NAME IS NULL2017/12/29(金) 11:04:43.57ID:dtNZwIie
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

SEPQX7O4N7

622NAME IS NULL2018/01/01(月) 12:26:46.33ID:???
テーブルの中のカラム名のうち、Identity属性を持っているものを取り出す方法
はありますか?

623NAME IS NULL2018/01/05(金) 23:34:44.66ID:???
sys.columnsでis_identity=1のもの検索すれば良いんじゃね

624NAME IS NULL2018/01/23(火) 16:28:39.64ID:???
初めてインストールしたは良いけど、起動して新規のデータベースをつくるにはどうするのかが分からん(-_-;)

625NAME IS NULL2018/01/23(火) 16:31:34.95ID:???
SSMSで作ってどうぞ

626NAME IS NULL2018/01/23(火) 17:04:59.69ID:???
>>625 さん、ありがとうございます。
SSMSというのをインストールして起動したら、なんか分かるような気がしてきました。
Accessとそんなに変わらんだろうって勝手に思ってたので焦ってます(笑)

627NAME IS NULL2018/01/23(火) 19:29:57.39ID:a3XdT7kq
焦らんでも中身はAccessとそんなに変わりなく使えるから落ち着いてどうぞ

628NAME IS NULL2018/01/24(水) 01:06:35.63ID:???
ACCESSはフロントエンドとDBMSと一体だからな
SQL ServerはDBMSだけだし

ACCESSからSQL Server使うでもいいんじゃない
まっさらな新規DB作るのだけ苦労するかもしれんが

629NAME IS NULL2018/01/26(金) 05:35:03.89ID:???
ssmsでカラムの表示の順番って指定出来る?

630NAME IS NULL2018/01/26(金) 12:49:54.65ID:pxozcjcA
>>629
ビューでも作れば?

631NAME IS NULL2018/01/26(金) 19:36:22.24ID:???
>>629
編集画面のこと言ってるなら無理だと思う

632NAME IS NULL2018/01/30(火) 17:06:23.96ID:???
やりすぎ防犯パトロール、特定人物を尾行監視 2009年3月19日19時7分配信 ツカサネット新聞
http://headlines.yahoo.co.jp/hl?a=20090319-00000026-tsuka-soci

この記事で問題になった通称やりすぎ防パトは、創価学会と警察署が引き起こしていたようです

掻い摘んで説明すると

・創価学会は、町内会や老人会、PTA、商店会等の住民組織に関し、学会員が役員になるよう積極的に働きかける運動を
 90年代末から開始し、結果、多くの住民組織で役員が学会員という状況が生まれた

・防犯パトロールの担い手は地域の住民と住民組織で、防犯活動に関する会議や協議会には、住民組織の代表に役員が出席する為
 防犯活動や防パトに、創価学会が間接的に影響力を行使可能となった

・防パトは住民が行う為、住民が不審者や要注意人物にでっち上げられるトラブルが起きていたが
 創価学会はその緩さに目をつけ、住民組織を握っている状況を利用し、嫌がらせ対象者を不審者や要注意人物にでっち上げ
 防パトに尾行や監視、付き纏いをさせるようになった

・防パトは地元警察署との緊密な連携により行われる為、創価学会は警察署幹部を懐柔して取り込んでしまい
 不審者にでっち上げた住民への嫌がらせに署幹部を経由して警察署を加担させるようになった

・主に当該警察署勤務と考えられる創価学会員警察官を動かし、恐らく非番の日に、職権自体ないにもかかわらず
 私服警官を偽装させて管轄内を歩いて回らせ、防犯協力をお願いしますと住民に協力を求めて回り
 防犯とは名ばかりの、単なる嫌がらせを住民らに行わせた(防犯協力と称し依頼して回っていた警察官らの正体は恐らく所轄勤務の学会員警察官)
 ※これに加えて防犯要員が同様のお願いをして回る

・こうして防犯パトロールを悪用し、住民を欺いて嫌がらせをさせつつ、創価学会自体も会員らを動員し、組織的な嫌がらせを連動して行った

つまり警察署に勤務する学会員警察官、警察署幹部、創価学会が通称やりすぎ防犯パトロールの黒幕

詳細は下記スレをご覧下さい
やりすぎ防犯パトロールは創価学会と警察署の仕業だった
https://rio2016.5ch.net/test/read.cgi/bouhan/1516500769/

633NAME IS NULL2018/02/04(日) 16:38:15.37ID:ygeeHQOY
SELECT "User"."id" AS "User__id", "User"."company" AS "User__company",
"User"."name" AS "User__name", "User"."itaric" AS "User__itaric",
"User"."system" AS "User__system", "User"."year" AS "User__year"
FROM "public"."users" AS "User" WHERE 1 = 1 ORDER BY "User"."itaric" asc,
"User"."system" desc

複数ソートを実行したいのだけれども、実行できてる??

634NAME IS NULL2018/02/05(月) 07:58:44.26ID:Q16Lz/UI
>>633
意味のないダブルクォーテーションと、意味のないWHERE句の条件と、複数ソートという謎の用語がわからない。

635NAME IS NULL2018/02/05(月) 08:28:06.73ID:???
ダブルクォーテーションはOracleから持ってきたからなのかも
複数ソートは複数キーのことかも
Whereはよくわからん

って言うか何を言いたいのかよくわからん w

636NAME IS NULL2018/02/05(月) 16:22:38.74ID:???
メディアオプションを[追加]にしてジョブで毎日バックアップしていますが
これだとどんどんバックアップファイルのサイズが大きくなってしまうので
常に最新の10日分だけ残すというバックアップの方法を教えてください
よろしくお願いします

637NAME IS NULL2018/02/05(月) 19:13:11.77ID:wLbeZJwJ
>>634
意味のないレスすんな
答えられんのなら黙ってる事だな

638NAME IS NULL2018/02/05(月) 22:52:50.94ID:Q16Lz/UI
>>637
仮定の話をするのはIT技術者ではない。

639NAME IS NULL2018/02/05(月) 22:54:32.98ID:Q16Lz/UI
Where 1 = 1 だけでSQLがまったくわかってないことがわかる。

640NAME IS NULL2018/02/05(月) 23:14:09.67ID:???
少なくとも文法はわかってるようだが?

641NAME IS NULL2018/02/06(火) 04:47:07.31ID:???
「WHERE 1 = 1」は↓みたいに書いとくと任意の行をコメントにするだけで条件の入れ替えが簡単に出来るから開発時はたまにやるかもw

WHERE 1 = 1
AND フィールド1 = '○○○'
AND フィールド2 = '△△△'
AND フィールド3 = '□□□'

642NAME IS NULL2018/02/06(火) 07:36:44.36ID:AHs/sZxD
>>641
やめろ

643NAME IS NULL2018/02/06(火) 07:49:13.23ID:???
>>641
プログラムでsql作る時普通に使うな

644NAME IS NULL2018/02/06(火) 11:48:04.77ID:???
うん。0 <> 1 も時々

645NAME IS NULL2018/02/06(火) 20:47:44.36ID:WoDXj185
【有賀さつき(52)小林麻央(34)黒木奈々(32)】 世界教師 マイトLーヤ「早死には原発事故の隠蔽のせい」
http://rosie.5ch.net/test/read.cgi/liveplus/1517828233/l50

646NAME IS NULL2018/02/07(水) 03:21:36.81ID:???
>>641
0=0
じゃダメなん?

647NAME IS NULL2018/02/07(水) 21:05:34.23ID:???
>>646
ゼロはオーと打ち間違えやすいので避けたい
テンキーなら間違えないが
ノートパソコンだとゼロとオーは隣あっていて打ち間違えやすい

648NAME IS NULL2018/02/07(水) 22:14:15.01ID:nx8/8ate
>>647
見間違えるのはわかるけど打ち間違えってw
それおまえだけだからwwww

649NAME IS NULL2018/02/07(水) 22:38:55.94ID:???
配列がランダムに変わるキーボードか?

650NAME IS NULL2018/02/08(木) 06:50:41.49ID:???
そもそも[O] なんて名前つけないし

651NAME IS NULL2018/02/08(木) 07:38:34.47ID:???
where 1=1はsql文の慣例句みたいなものでgoogleで検索してもいっぱいでてくる。そんな事で悩む必要はない。
http://kinocolog.com/where11/

652NAME IS NULL2018/02/08(木) 11:53:55.72ID:???
100文字以内のデータしか入れない場合には
nvarchar(100)
で良いですよね?
質問1
全角文字で半角文字でも100文字入るんですよね?
質問2
nvarchar(max)
にすると無駄にメモリやハードディスクを使いますか?

653NAME IS NULL2018/02/08(木) 13:35:25.45ID:???
回答1
Yes
回答2
No
varcharは可変長だから入ってる分だけの消費

654NAME IS NULL2018/02/08(木) 19:08:59.93ID:???
>>653
ありがとうございました。
>varcharは可変長だから入ってる分だけの消費
では、カラムが10文字でも100文字でも
とりあえずnvarchar(max) を使っておけば良いのでしょうか?
どういう場合にnvarchar(100) などを使うのでしょうか?

655NAME IS NULL2018/02/08(木) 19:18:47.90ID:???
index張らないならMAXでもいい
張るなら900バイト以下でなければならない

656NAME IS NULL2018/02/08(木) 22:35:21.32ID:???
教えてください。

テーブルA に製品の情報がたくさん登録されています。
この中から、不特定多数の特定の文字列で始まらない名称の製品を検索したいと思います。
条件が固定であれば次のような SQL を書けます。

SELECT *
FROM [テーブルA]
WHERE NOT ( [NAME] LIKE 'A%' OR [NAME] LIKE 'B%' OR [NAME] LIKE 'C%' )

条件(先頭の文字)を動的に変更するとしたら、
上のをストアドにしてパラメータで与えるとか、
条件をテーブルに保存しておくなどがあると思うのですが、SQL の書き方がわかりません。
どうするのが一般的か、教えてください。

657NAME IS NULL2018/02/09(金) 03:57:06.88ID:QeQdDyiD
>>656
パラメータなりテーブルなりで可変にして
動的SQLかなあ
http://blog.livedoor.jp/akf0/archives/51205355.html

658NAME IS NULL2018/02/09(金) 14:55:37.85ID:???
テーブル型を引数にして

where not Left([NAME], 1) in (select [Word] from @引数)

みたいな風かな
ASCII しないといかんかもしれん

6596562018/02/11(日) 00:41:15.28ID:???
>>657,658
ありがとう。
どっちのやり方も知らなかったです。

とりあえず 658 さんの方法を発展させてやってみようと思います。
657 さんの動的 SQL は便利すぎ。

660NAME IS NULL2018/02/11(日) 01:14:00.27ID:???
一時テーブルに検索文字列セットして
left joinでlike 演算子で連結してnull のものだけ取ればいいように思える
https://teratail.com/questions/65949

661NAME IS NULL2018/02/11(日) 04:44:52.94ID:iUCuMXup
>>659
動的SQLはできるだけ使わないように。条件の組み合わせが大量になければ、静的SQLで書く。動的SQLはSQLの組み立て方によっては、可読性、保守性がさがり、さらにコーディングミスをおこし、スペースを入れわすれた等おかしなSQLを簡単に仕込んでしまう。

662NAME IS NULL2018/02/11(日) 04:51:00.67ID:iUCuMXup
>>656
それ単にパラメータによって、LIKE用の文字列を作り分けておけばいいだけ。

6636562018/02/12(月) 00:49:37.83ID:???
>>660
ありがとう。
left join で like って使えるんですね。
その結果が null のモノだけって発想がありませんでした。
こちらをまず試してみます。

>>661,662
ありがとう。
うん、そう思って動的 SQL は最後の手段にしとこうかと。

664NAME IS NULL2018/02/12(月) 07:54:28.97ID:???
こうしてまたバカのバカによるバカのためのバカノウハウが広まるのであった

665NAME IS NULL2018/02/12(月) 09:52:09.80ID:???
スマートな解決策書けてりゃ格好いいんだけどなぁ...
>>664だとバカの遠吠えにしかなってない w

666NAME IS NULL2018/02/12(月) 11:51:24.82ID:tzC/U9n1
結局、RDBになるとSQLが魔法になってプログラムの見た目はシンプルでも、RDBMSの処理が複雑になるようなものを作るやつが多すぎる。

RDBの処理が汚なくなり、無意味に負荷がかかるようなプログラミムを書いても、RDBMSの処理がどう処理しているのか考えないから、珍妙なことを推奨する。

667NAME IS NULL2018/02/12(月) 12:19:14.11ID:???
>>665
そのスマートな解決策()が動的SQLなんよ
バカには難しいらしいけんどねw

668NAME IS NULL2018/02/12(月) 13:30:52.28ID:???
動的SQLでどや顔 w

669NAME IS NULL2018/02/12(月) 19:57:26.33ID:tzC/U9n1
データベース板はレベルが低い。リレーショナルデータベースに詳しくもないのにこうだ、これが正解だと言いはる人間ばかり。

670NAME IS NULL2018/02/12(月) 22:04:38.94ID:???
せめてどこがどう「無意味に」負荷がかかってるのか書けないのかね

671NAME IS NULL2018/02/13(火) 01:01:59.31ID:mpzcP+RA
>>670
検索結果が同じSQLでも、RDBMSではSQLの構文解析(ソフトパース、ハードパース)が行われ、実行プランも作り直しなることもあり、RDBMS側の処理が変化する。

プログラムだと結果は同じなのに、こうすると遅い、速いや、意味のないコードを書くと文句を言うくせにSQLになると、とたんにRDBMSもプログラムだということを忘れているか、理解していない。

SQLは魔法ではない。

672NAME IS NULL2018/02/13(火) 06:48:41.32ID:???
別にSQLでもこう書くべきとか言う議論は普通にやられてるしお前がそう言うのを見てないだけかと

673NAME IS NULL2018/02/13(火) 19:29:30.08ID:???
>>671
同じ結果の処理を同じ手間で書けるなら、負荷は軽い方がいいに決まってるけど
で、その説明でどこがどう負荷かってるの?
まさかクエリキャッシュ効かないでコンパイル時間がとか言う気?

>>672
まあしかし、理想はそのへん意識しないでRDBMSに任せる事なんだろうとは思う
オプティマイザの動作を予想して奇妙なSQL書くのは本末転倒だし

674NAME IS NULL2018/02/13(火) 20:13:55.26ID:0W+Ckc+y
久しぶりにアツいマウント合戦開幕したなw
どっちも負けろwwww

675NAME IS NULL2018/02/13(火) 21:30:57.57ID:0W+Ckc+y
どした?おい?w
ファイッッッ!!!wwwwww

676NAME IS NULL2018/02/13(火) 21:40:47.70ID:???
SQL SERVER2014Expressが動いているWindowsサーバーのOSをクリーンインストール
する予定なのですが、データベースを丸ごとバックアップしておいて、あとで戻すなどは
可能ですか?ヒントを教えて下さい。DBのサイズは500MB 程度です。

677NAME IS NULL2018/02/13(火) 22:07:12.29ID:???
>>676
データベースのデタッチとアタッチ

678NAME IS NULL2018/02/13(火) 23:35:26.82ID:???
リンクサーバー設定とかデータベースの設定とかもバックアップする方法ってないものか
ドライブごとバックアップするしかないのかな

679NAME IS NULL2018/02/14(水) 00:04:57.46ID:???
masterバックアップして戻せば戻ったような

680NAME IS NULL2018/02/14(水) 02:50:36.19ID:kUpzGWTP
>>673
根本的にリレーショナルデータベースを分かってないのになぜ知ったかぶりをするのか?

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

リレーショナルデータベースの内部処理が見えないから、自分のしょぼいプログラムと比較にならないことをしていることに気づかない。

681NAME IS NULL2018/02/14(水) 02:53:40.84ID:kUpzGWTP
>>673
そもそもあんたの用語がおかしい。データベースを知らないと思う。データベースを使うのが精一杯で、リレーショナルデータベースの構造も知らないと思われる。

クエリキャッシュなんて言葉はデータベースエンジニアは使わない。

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

バッファキャッシュの有無、データファイル読み書きタイミング、速度、OSのキャッシュ、ストレージのキャッシュ、ありとあらゆる条件で性能は決まるのであって、そのなかからどう処理されているかのSQL Serverの情報を元にSQL Serverが言っている処理情報の誤りまで判断して決めることだ。

683NAME IS NULL2018/02/14(水) 07:51:44.92ID:???
定期的にわくよね。当たり前の一般論をすごいことのように語るID付いてるおっさん。

684NAME IS NULL2018/02/14(水) 07:55:04.82ID:???
>>682
すごいね。疲れない?

685NAME IS NULL2018/02/14(水) 10:24:40.03ID:4BYcg5RC
>>677
ありがとうございました。やってみます。

686NAME IS NULL2018/02/14(水) 17:50:15.79ID:gGA+OaqX
【2.14】   環 境 破 壊 の 日   ≪バレンタインデーは必要?≫  チョコを配るって何  【CO2】
http://rosie.5ch.net/test/read.cgi/liveplus/1518571383/l50

687NAME IS NULL2018/02/14(水) 18:45:38.91ID:???
>>679
知らなかった。今度からmaster もバックアップする

688NAME IS NULL2018/02/14(水) 20:48:54.39ID:???
masterリストアするのは簡単じゃないから、再生成するスクリプト作って流すほうが楽かもよ

689NAME IS NULL2018/02/15(木) 18:22:36.56ID:YBD93ntd
質問です。
顧客テーブルと売上テーブルがあり、顧客IDで紐付いています。
特定の条件の売上が無い(売上テーブルにレコードが存在しない)顧客のみを抽出するには、どのような方法が考えられるでしょうか?

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

無いものは抽出できない、とは思うのですが…

690NAME IS NULL2018/02/15(木) 18:56:53.86ID:???
>>689
LEFT JOIN

スレチじゃね?

691NAME IS NULL2018/02/15(木) 19:10:24.66ID:L39WhMJw
>>689
自ら吐いた言霊に呪われとるやんw

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

な?

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

みたいな風かな

693NAME IS NULL2018/02/15(木) 21:23:39.60ID:???
>>692
そういうINの使い方は悪手だよ
NOT EXISTSかLEFT JOINを使おう

694NAME IS NULL2018/02/15(木) 21:23:57.09ID:???
>>689
>>690で答え出てるけどないものを抽出するんじゃなくて、「売上に紐付かない顧客」を抽出するってこと

695NAME IS NULL2018/02/15(木) 21:31:33.97ID:???
>>694
そういうJOINの使い方は悪手だよ
NOT EXISTSを使おう

696NAME IS NULL2018/02/15(木) 21:40:30.01ID:???
exists は確かにわかりやすい記述だけど遅い
大量のデータで使うとサーバーが唸る
できるならinner joinでやったほうがいい
http://kkoudev.github.io/blog/2013/09/14/sql/

697NAME IS NULL2018/02/15(木) 23:18:27.60ID:???
>>696
NOT EXISTSをINNER JOINにするのは無理だし
MySQLはNested Loopしか使えないからね
他の一般的RDBとは事情が違うよ

698NAME IS NULL2018/02/15(木) 23:21:53.94ID:???
>>695
NOT EXISTSのほうがパフォーマンスいいことのほうが多いけど
LEFT JOINが悪手ってわけでもないと思うけどな

少なくとも質問者はLEFT JOINを理解してない風なので
そっちからはじめたほうがいい

6996892018/02/16(金) 00:03:31.60ID:???
みなさまありがとうございます。
LEFT JOINでできるとは思いませんでした…頭が硬いですね。
教えていただいたNOT EXISTSも調べたところまさにやりたいことでした。
何とかなりそうです。
ありがとうございました。

700NAME IS NULL2018/02/16(金) 00:31:27.89ID:???
>>695
環境、データ、インデックスとかによって違うからお前さんみたいに盲信してるのが一番ヤバイ

701NAME IS NULL2018/02/16(金) 01:49:40.19ID:nepixz1J
経験上LEFT JOIN でIS NULLのほうが速い場合がほとんど

702NAME IS NULL2018/02/16(金) 02:02:09.86ID:???
パフォーマンス気にするなら計測すればいい
>>700の言うように状況によって結果は変わる
https://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join

703NAME IS NULL2018/02/16(金) 05:41:07.18ID:???
>>692さんみたいな書き方を良くするんですが、これは遅いのですか?

704NAME IS NULL2018/02/16(金) 05:43:00.22ID:???
あっ、ただ自分の場合は

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

ではなく

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

と書きます。

705NAME IS NULL2018/02/16(金) 10:17:03.78ID:???
売上げテーブルに顧客IDでインデックス貼ってあればそんなに遅くない気もする

706NAME IS NULL2018/02/16(金) 10:51:09.70ID:???
692は自分だけど、後でみなさん言われるとおり

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

のほうが速そうだな

707NAME IS NULL2018/02/16(金) 12:21:10.95ID:???
速いとか遅いとか気にしたいんならDBが適切にメンテされているかを考えるべきやな
SQLの表記のゆれなど考えるだけ無意味

708NAME IS NULL2018/02/16(金) 15:52:24.98ID:???
NOT INの場合はパフォーマンス以前に
顧客IDがNOT NULLじゃないと意図した結果が得られない可能性がある

NOT NULLなら意図した結果が得られるけど、速度はDBの最適化に依存
INの最適化レベルが高いDBならNOT EXISTSと同程度の速度に場合もある
でもそうならない場合もあるからこういうケースでは基本使わない

709NAME IS NULL2018/02/16(金) 16:42:30.61ID:G4Vvw6Lg
【アマルガム】水銀を歯に? 厚労省『暴動が怖い』
http://mao.5ch.net/test/read.cgi/doctor/1517058870/l50
【ペットフード】告発したら3人組に棍棒で襲われた
http://egg.5ch.net/test/read.cgi/hosp/1517110484/l50
【マンモグラフィー】おっぱい挟んで癌検査…必要?
http://egg.5ch.net/test/read.cgi/bio/1517115639/l50

710NAME IS NULL2018/02/16(金) 20:39:05.84ID:yNJxj2Lb
>>700
環境、データ、インデックスとかによって違うからお前さんみたいに
テストした環境でLEFT JOINが速いからLEFT JOINにしてしまう奴が一番ヤバイ

711NAME IS NULL2018/02/16(金) 20:59:00.37ID:???
>>710
うまい返ししたつもりなんだろうけどアホ晒してるだけやぞww

712NAME IS NULL2018/02/16(金) 21:08:47.07ID:yNJxj2Lb
>>711
普通に答えただけだけどうまかったか?w
マジかwセンスあんな俺www

713NAME IS NULL2018/02/16(金) 21:32:20.04ID:???
誰か試してみてよ

714NAME IS NULL2018/02/16(金) 21:53:09.91ID:???
単純なnot inならouter joinと同じ実行計画吐いたきがする

715NAME IS NULL2018/02/16(金) 22:16:06.50ID:yNJxj2Lb
>>714
だからたまたまその時その環境でそういう実行プランが作られたという経験を
後生大事に今生の知識として胸にしまいこんでも無駄だと言っておろうが

SQLはいつだってよりシンプルにより直接的にやりたい事を表現してる様に書くべきなんや

716NAME IS NULL2018/02/16(金) 23:37:28.84ID:???
>>712
誰もうまい返しとは言ってないぞ
日本語の理解力もないとな w

717NAME IS NULL2018/02/17(土) 00:10:23.40ID:RRaJ3TQN
>>716
は?こっちこそお前がうまい返しと言ったとは言っとらんが???
異次元の理解力だなお前…
というかアスペだなwww

718NAME IS NULL2018/02/17(土) 00:12:55.27ID:???
ここもID強制表示にしてほしいな

719NAME IS NULL2018/02/17(土) 00:21:22.92ID:???
>>717
> というかアスペだなwww
自己紹介乙w

720NAME IS NULL2018/02/17(土) 15:34:21.57ID:lIYg2W3z
5chはROM専みたいな筆不精は、長文が書かれていると、時間をかけて書いていると思い込む。

世の中、超速で読み書きができる人間がいるのだよ。

721NAME IS NULL2018/02/17(土) 16:12:56.45ID:???
コピペの達人

722NAME IS NULL2018/02/17(土) 16:15:51.02ID:???
>>720
いきなりどうした?

723NAME IS NULL2018/02/18(日) 01:31:05.23ID:JhkmGsBQ
>>721
オリジナルです

724NAME IS NULL2018/02/18(日) 01:32:48.22ID:JhkmGsBQ
仕事でやってるなら仕事が異常に速いひとを知ってるはずだけどな。並の人間の20倍、30倍くらい仕事が速い人もいる。

725NAME IS NULL2018/02/19(月) 05:02:12.33ID:???
1.5人月で見積もられた仕事を1日で片付ける人か。
さすがにそれは見たことないわw

726NAME IS NULL2018/02/19(月) 12:21:33.79ID:???
めちゃくちゃキーボード打つの速そう

727NAME IS NULL2018/02/19(月) 19:22:31.89ID:???
30人にやらせれば余裕で1日で終わるというのに

728NAME IS NULL2018/02/19(月) 19:45:21.08ID:???
>>726
そんな思考だから仕事遅いんだよ
できる人できない人の違いすら理解できてない

729NAME IS NULL2018/02/19(月) 20:26:20.69ID:???
だな
キーボード打つ速度とかマジ関係ない

730NAME IS NULL2018/02/19(月) 20:33:52.86ID:md3NX5hc
仮に1.5人月のコードを5000行とすると
1日でそれ書いて、さらに仕様書とかも書いてテストもするんやで?
めちゃくちゃ打つの速いやん

731NAME IS NULL2018/02/19(月) 20:40:21.60ID:???
今どき行数で考えるなよ

732NAME IS NULL2018/02/19(月) 20:55:39.42ID:md3NX5hc
>>731
何で考えても書く行数は変わらんのだけどw

733NAME IS NULL2018/02/19(月) 21:14:39.42ID:???
無能な働き者の手による大量の無駄なコードは有能な怠け者の手による洗練された短いコードに劣る

734NAME IS NULL2018/02/19(月) 22:24:25.26ID:md3NX5hc
な?具体的に数字だされると速いやろw

735NAME IS NULL2018/02/19(月) 23:38:27.02ID:???
>>732
724が言ってるような並の人間より仕事が20倍30倍速いやつってのは
並の人間が5000行書かないと実現出来ない処理を200行程度書くだけで実現したりできるわけ
キーボードだってできるだけ打たなくていい方法を考える

見積もり時に書く行数がほぼ固定されてるような仕事してるなら
できるだけそこから早く抜け出すことだな

736NAME IS NULL2018/02/20(火) 07:11:59.70ID:D0Bn3/BK
>>735
それコードが圧縮されとるだけやんwコードゴルフかw
コードは20倍圧縮されても作業にかかる時間は速くなっとらんでそれwww

737NAME IS NULL2018/02/20(火) 07:20:13.02ID:???
典型的な無能の発想だな

738NAME IS NULL2018/02/20(火) 08:05:15.51ID:oDlAdTII
お前らはどうしてスキルないくせに突飛な主張してマウントとりたがるんや?
俺は笑えるからこうして楽しんどるけど一般的にはみっともないだけやでw

739NAME IS NULL2018/02/20(火) 14:51:54.91ID:???
どれだけ優秀な人間だろうと、1.5人月で見積もった仕事を1日で片付けたらな
そもそもの見積もりがぼったくりすぎるだけだな

740NAME IS NULL2018/02/20(火) 17:42:37.73ID:???
>>736
コードを圧縮て
斜め上の発想だね

741NAME IS NULL2018/02/20(火) 17:49:18.93ID:???
メタプログラミングやコードジェネレーションを考えればいいと思うよ
できるやつは無駄を省いて機械に仕事をさせる
Paul GrahamのLispの話と同じ

新着レスの表示
レスを投稿する