X



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

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

過去スレとかめんどいから誰か適当に貼って
0517NAME IS NULL
垢版 |
2017/10/23(月) 15:27:52.10ID:???
505辺りから質問者とは別の人だろ
0518NAME IS NULL
垢版 |
2017/10/23(月) 15:28:32.51ID:CzSV0ugc
普通のワークテーブルも作ったらいけない決まりがあるのか?
0519NAME IS NULL
垢版 |
2017/10/23(月) 21:08:58.07ID:???
>>516
具体的に書けないなら黙ってろよ
マジでウザイわ
0520NAME IS NULL
垢版 |
2017/10/23(月) 21:11:50.12ID:mf1jBI9V
データの途中経過も分からない作りにしたい人はどういう感覚なんだろうね。
0521NAME IS NULL
垢版 |
2017/10/23(月) 21:58:30.84ID:???
>>517
503の書き方からして同一人物だろ
0522NAME IS NULL
垢版 |
2017/10/29(日) 00:25:48.63ID:???
SQL Serverの操作に特化したPowerShellがあるって聞いたんだけど
このスレには使ってる人いないのかな?
SSMS使えない環境だとそれなりに威力を発揮するのか知りたかったのだが
0523NAME IS NULL
垢版 |
2017/10/30(月) 22:53:25.46ID:0uDb1bS4
壊滅的にcliのセンスがないmsにそんな期待するだけ無駄
0524NAME IS NULL
垢版 |
2017/10/30(月) 23:07:01.23ID:???
sqlserverでpowershell使っている人いないだろ

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

あるいはベンダーがクライアントの設定を変えたい時psでスクリプト作ってクライアント送って実行してもらうとかじゃね
0525NAME IS NULL
垢版 |
2017/10/31(火) 11:37:21.58ID:IzoEenp0
>>524
SQL Serverそのものが、PowerShellのスクリプトを吐くんだが?
0526NAME IS NULL
垢版 |
2017/10/31(火) 12:30:18.27ID:???
>>525
>SQL Serverそのものが、PowerShellのスクリプトを吐く
kwsk
どこでどんなスクリプト吐くんだ
それはクライアントツールじゃなくてSQL Serverそのものが吐いてるのか?
0527NAME IS NULL
垢版 |
2017/10/31(火) 13:10:45.30ID:IzoEenp0
>>526
management studio
0528NAME IS NULL
垢版 |
2017/10/31(火) 17:24:38.56ID:???
>>527
SSMSがどんなサーバ設定のスクリプト吐くの?

まあそもそもSSMSはクライアントツールであって、それがPSスクリプト吐いたからって、SQL ServerそのものがPSスクリプト吐いてるわけじゃないんだけど
0530NAME IS NULL
垢版 |
2017/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 するとエラーが発生することなのですが、
こういうケースでは一般にどのように対応するのが定石なのでしょうか。
0531NAME IS NULL
垢版 |
2017/10/31(火) 23:03:51.74ID:???
>>530
ストアドをテーブル関数化すればselect使えるからうまくいくかも
0532NAME IS NULL
垢版 |
2017/10/31(火) 23:48:42.51ID:???
とりあえずエラートラップして握りつぶせば良いんじゃね
0534530
垢版 |
2017/11/01(水) 22:25:35.36ID:???
みなさん、ありがとうございます。

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

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

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

スケジュール調整の件、覚えておきます。
今回のは幸いに単純なのでなんとかなりそうなのですが。すっきりしないなぁ。
0535NAME IS NULL
垢版 |
2017/11/09(木) 01:07:32.60ID:???
初心者です。
二つのテーブルが有って、その両者に同じ名前のカラムが有って、それらはそれぞれプライマリキーに設定されています。
その二つのテーブルをマネージメントスタジオでダイアクラムを表示してリレーションシップで結びます。
これで外部キーの設定が出来たと思ったのですが、そうでは無いようでした。
外部キーの設定には、また別の操作が必要でした。
ここで疑問なのですが、二つのテーブルをダイアクラムでリレーションシップの線を結んだだけの状態は、どういう状態なんですか?
0536NAME IS NULL
垢版 |
2017/11/09(木) 12:30:07.76ID:3vuEsp4f
見てのとおり、二つのテーブルをダイアクラムでリレーションシップの線を結んだだけの状態、です。
0537NAME IS NULL
垢版 |
2017/11/09(木) 13:09:26.62ID:???
>>536
なるほど。
その場合、リレーションシップを結んでいるかいないかで
それらのテーブルに対するSQLの結果が異なる場合はありますか?
つまり単に線で結んでいるだけなら、SQLには影響しないと考えて良いですか?
0538NAME IS NULL
垢版 |
2017/11/09(木) 13:19:48.42ID:???
SQL欄表示すりゃ何してるか分かるよ
0539NAME IS NULL
垢版 |
2017/11/10(金) 10:43:05.09ID:???
SQLServerというよりか、ManagementStudioの話なんですが
ビューの作成や保守が死ぬほど使いづらいです。

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

ストアドの作成/保守するときと同じく
CREATE(ALTER) VIEW 〜 っていう画面にできないんでしょうか。
0541NAME IS NULL
垢版 |
2017/11/10(金) 12:56:12.39ID:???
新規クエリタブ開いてコピペしろ
アホらしいがこれが一番早い
0542NAME IS NULL
垢版 |
2017/11/10(金) 13:18:24.75ID:???
新規に作る分にはいいんですが
以前に作ったビューの手直しをするとき
SQL文を勝手に整形するのだけでも止められないですかねぇ
0543NAME IS NULL
垢版 |
2017/11/10(金) 13:22:51.03ID:???
ムリダナ(・x・)
0544NAME IS NULL
垢版 |
2017/11/10(金) 18:53:31.86ID:???
普通viewなんかexcelの計算式でviewのsql文作ってコピペで張り付けて作るだろう
項目数が100以上あろうがexcelのファイル定義書があれば数分でできるぞ
0545NAME IS NULL
垢版 |
2017/11/10(金) 18:57:49.31ID:+oA2Me4B
エクセルにsql作れる関数なんかあったっけ?
0546NAME IS NULL
垢版 |
2017/11/10(金) 19:42:05.74ID:???
>>545
関数はない計算式だよ

例えば、excelのA列にカラム名
B列に別名があったら
C列1行目に=",["&A1&"] AS ["&B1&"]"
と計算式を1つ作り下へコピーすれば
カラム部分のSQL文が簡単にできる
sumしたいカラムとかも計算式を工夫すれば簡単にできる。
0547NAME IS NULL
垢版 |
2017/11/10(金) 21:18:25.39ID:5FHSQ6Bb
そういう話ではない。初心者なのかSQLスクリプトを使用する習慣がないようだよ。
0548NAME IS NULL
垢版 |
2017/11/15(水) 10:18:50.96ID:6Q/c6Tcb
LEFT JOINする時に、両方のテーブルに例えば共通のidと言うカラムがあると、
select * from T1 left join T2 on T1.id = T2.id;
を実行すると、idのカラムが二個出て来ますよね。
それを一個にするにはどうしたら良いですか?
select * をやめて必要なカラムを書き並べて取り出すしか無いですか?
0551NAME IS NULL
垢版 |
2017/11/15(水) 11:44:10.62ID:???
内部結合ならともかく、外部結合だと
その二つは違う場合があるんだが
0553NAME IS NULL
垢版 |
2017/11/15(水) 12:19:38.98ID:2A3D0a21
で?
0554NAME IS NULL
垢版 |
2017/11/15(水) 12:29:05.63ID:???
>>548
select T1.* ,T2.hage1 ,T2.hage2 from T1 left join T2 on T1.id = T2.id;
とか T2だけカラムを羅列する
0555NAME IS NULL
垢版 |
2017/11/15(水) 12:43:55.38ID:LwMIMZHH
また自演か
0556NAME IS NULL
垢版 |
2017/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では出来ませんか?
0558NAME IS NULL
垢版 |
2017/11/15(水) 22:24:07.29ID:???
>>556
お前は髪が薄い俺を怒らせたから教えない
0560NAME IS NULL
垢版 |
2017/11/16(木) 12:27:44.35ID:RhBRQtps
ハゲの事を薄毛って言うの本人だけ説
0561NAME IS NULL
垢版 |
2017/11/23(木) 21:49:46.78ID:???
質問なのですが
sqlcmdやbcpでリモートのSqlServerにログインする場合
パスワードを何度も間違えても特にロックアウトされたりとかはしないですよね?
0562NAME IS NULL
垢版 |
2017/11/23(木) 21:55:28.92ID:???
>>561
Windows認証ならADやPCのローカルポリシーでパスワードのロックアウト設定引き継ぐことはあるよ
sa認証は予め設定する必要あるけど
0563NAME IS NULL
垢版 |
2017/11/24(金) 22:42:10.74ID:???
マイクロソフトのサイト行くとSqlServerのサンプルデータベースとして
「AdventureWorks」ってのが出てくることが多いんだけどあれって昔からあるよね?
あれの元ネタというか由来ってなんなのかな?
0564563
垢版 |
2017/11/27(月) 04:37:45.34ID:???
誰もわからんか・・・
自分も調べたけどわからなかった・・・orz
Accessにも出てくるし、20年来の謎
0565NAME IS NULL
垢版 |
2017/11/27(月) 08:17:32.83ID:???
サンプルだからテキトーに付けた名前だろ
下手に実在の会社と被ると色々面倒だからそこら辺は調べてるとは思うけど
0566NAME IS NULL
垢版 |
2017/11/27(月) 17:09:44.64ID:k8i9IH/m
AdventureWorksだと、ただの検証用という意味で、何のひねりもない。
0568NAME IS NULL
垢版 |
2017/11/29(水) 17:56:41.10ID:???
>>567
そんな情報良く気付くなあ。感心
0569NAME IS NULL
垢版 |
2017/12/04(月) 22:24:53.03ID:???
SSMSってインストールしたユーザーならWindows認証は必ず通れると思っていたんだけど
入れないって連絡きたけどそんなことってあるのか?
0570NAME IS NULL
垢版 |
2017/12/04(月) 22:27:52.00ID:6wISNT0k
INSERTやMERGEでは
VALUES ( values_list)
で沢山の値を指定出来ますが、生成されるSQL文は何文字以内などの制限はありますか?
例えば一気に100万件くらいのデータを追加しても正常に動きますか?
何らかの制限があれば教えて下さい。
0571NAME IS NULL
垢版 |
2017/12/05(火) 13:21:31.06ID:???
>>569
結構前のVerだとインスコ時に明示的に追加してやらんとならんかったような

>>570
1ステートメントあたりの文字数制限はあった気がする
それ以内なら何千万行でも問題ない
0572NAME IS NULL
垢版 |
2017/12/05(火) 14:41:05.87ID:???
SSMSをインストールしたら誰でもDBにログインできるってなら
俺のPCは世の中の全てのSQL Serverにつながるのかね
0573NAME IS NULL
垢版 |
2017/12/05(火) 19:19:58.29ID:75Z5+bpM
>>572
どういうバカの思考回路だとそんな結論になるのかちょっとだけ気になるよ
0574NAME IS NULL
垢版 |
2017/12/05(火) 19:47:15.06ID:???
他人の夢の中にログインできるDC mini が欲しい
0575NAME IS NULL
垢版 |
2017/12/05(火) 19:58:36.60ID:???
>>573
>SSMSってインストールしたユーザーならWindows認証は必ず通れると思っていた
0576NAME IS NULL
垢版 |
2017/12/05(火) 20:20:32.04ID:75Z5+bpM
>>575
ああそうか「ユーザー」をキミ自身のことだと考えたわけか
なかなか新鮮な文脈解釈だと思うよ
0577NAME IS NULL
垢版 |
2017/12/07(木) 13:42:17.87ID:l7erEtxE
LinuxでSSISをインストールしたいんだけど、エディッション選択で何を選んでも
”Could not write Licensing information”と出て先へ進めない。

SQL Server本体の時はDevelopper Editionを問題なくインストールできたのになんでよーー
0578NAME IS NULL
垢版 |
2017/12/07(木) 18:44:45.88ID:IMylgnN4
>>577
エラーメッセージを素直に解釈すれば、パーミッションの問題たろうに。
0579NAME IS NULL
垢版 |
2017/12/08(金) 08:11:01.53ID:???
>>571
バージョン聞くの忘れたけど多分2008か2012なんだよね
調べてみます
ありがとう
0580NAME IS NULL
垢版 |
2017/12/08(金) 16:45:10.45ID:???
>>81
>>390
昨日現象が出て、今スレ開いたらそのものずばりの人がいてやったーと思ったらまだ解決してねえ!
0582NAME IS NULL
垢版 |
2017/12/13(水) 21:30:09.63ID:???
全くの無知からSQLサーバーの担当になりました。
データベースからデータを引っ張ったりして資料作成する業務なんですが、いい勉強方法ありませんか?
引き継ぎも無しに任されたので混乱してます
0583NAME IS NULL
垢版 |
2017/12/13(水) 21:43:37.22ID:???
>>582
とっつきやすいのはMSの自習書あたりかね
0584NAME IS NULL
垢版 |
2017/12/13(水) 22:55:55.46ID:???
作成したDBをSSMSで削除したいのですが、使用中で削除出来ない場合があります。
最悪、サーバーを再起動すれば削除出来るんですが、簡単に削除する方法はありますか?
0585NAME IS NULL
垢版 |
2017/12/13(水) 23:46:30.65ID:???
接続してるユーザ全部落とせばいけるんじゃね
0588NAME IS NULL
垢版 |
2017/12/14(木) 12:19:58.71ID:???
>>586
それあかんやつやろ
ハッキングされとんで
0589NAME IS NULL
垢版 |
2017/12/14(木) 12:51:38.09ID:???
SMS 17使っていて、更新があると出るのでクリックするとダウンロードサイトが開くが
通常のインストーラーしか見当たらない。Updateはどこにあるの?
0590NAME IS NULL
垢版 |
2017/12/15(金) 10:10:54.10ID:???
>>584
使用状況モニターから掴んでいるプログラムを強制終了
0591NAME IS NULL
垢版 |
2017/12/17(日) 22:23:55.62ID:???
c#でEFの質問はここでしょうか?
0592NAME IS NULL
垢版 |
2017/12/17(日) 22:38:01.11ID:???
どんな思考経路でそんな結論に至ったのか
0593NAME IS NULL
垢版 |
2017/12/17(日) 22:54:35.12ID:???
同じMSだからだよ。それくらい気付けよな。
0595NAME IS NULL
垢版 |
2017/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台ちょっとです。
0597NAME IS NULL
垢版 |
2017/12/18(月) 11:39:53.12ID:???
グループ会社が絡む複雑な話だったらマイクロに相談するけど
よくある中小企業のサーバー1台、クライアント50台ちょっと、という実に普通の話だもんで
0598NAME IS NULL
垢版 |
2017/12/18(月) 19:01:41.72ID:WUe68RNI
グループ会社が絡んでも別に複雑じゃないけどクロソにはとりあえず相談するだろ
0599NAME IS NULL
垢版 |
2017/12/18(月) 19:04:02.94ID:???
>>595
コアライセンスのがいいね
ただ今後SQLServer増やす予定があるならcalは他のサーバーでも
使えるのでサーバーcalライセンスのほうがいい
0600NAME IS NULL
垢版 |
2017/12/18(月) 19:10:55.79ID:???
その辺りのライセンス云々は富士通とかベンダ解説資料がぐぐると良く引っかかるよね
同じようなことしたけど、VL価格とか出てくると更に訳がわからなくなって辛かった記憶有るわ
0601NAME IS NULL
垢版 |
2017/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

だと当然にして即座に通る
0602NAME IS NULL
垢版 |
2017/12/27(水) 13:43:23.90ID:???
ちなみに 主キーじゃない項目 = YY は 主キー=XX とは全く別レコード

2行目のupdateした直後にロックのかかり具合を見ると
type=PAGE、request_mode=IX と type=KEY、 request_mode=X
がそれぞれ、数個出現してる
0603NAME IS NULL
垢版 |
2017/12/27(水) 19:25:55.49ID:lvRR+7xm
SELECTで行ロックしたいのかどうかがわからない。

あなたの説明だと行ロックしたいのか、ただロックエスカレーションをどうにかしたいのか、なんだかわからない。
0604NAME IS NULL
垢版 |
2017/12/27(水) 20:08:35.42ID:???
>>74-79
この辺に、Accessファイルをリンクサーバで使う話が出てますけど、SQLServerが64bitでAccessが32bitの時の方法を知っている方いませんか
SQLServerも32bitならできることは確認しています
> ACE.OLEDBってのがあって、これは64ビット版もある
これも試してみましたが、うまく使えていません
動作確認のために純粋な64bit環境を用意してみようとも考えていますが、Officeはしばらく32bit版を使う必要があるので、純粋な64bit環境に移行は当分できません
アドバイスをお願いします
0605NAME IS NULL
垢版 |
2017/12/27(水) 21:12:25.91ID:???
>>604
ここみて32bitのAccessDatabaseEngine.exeをインストールすればよい
http://plus-sys.jugem.jp/?eid=446

officeの64bitが入ってたら一旦アンインストールすれば普通にインストールできる
0607NAME IS NULL
垢版 |
2017/12/27(水) 21:39:07.90ID:???
>>605
ここのリンク先は参考にならないわ
sqlserverやosのbitは無視して使いたいaccessファイルのbit基準でAccessDatabaseEngine.exeを
msからダウンロードしてインストールすればよい
0608NAME IS NULL
垢版 |
2017/12/28(木) 02:48:09.70ID:???
>>605>>607
Officeが既に32bit版なので、32bit版のACE.OLEDBは入っていたので、32bit版のAccessDatabaseEngine.exeはインストールしたことはありませんでした
試してみます
レスありがとうございました
0609NAME IS NULL
垢版 |
2017/12/28(木) 03:10:35.02ID:???
普通に32ビットのACCESS入れたら
32ビットのSQLServerクライアントも入ったと思ったがなぁ
0610NAME IS NULL
垢版 |
2017/12/28(木) 03:25:09.72ID:???
もしかして、SQLServerからACCESS(のデータベース)にリンク張りたいって話か?
だったらSQLServerと同じビット数のACE入れないとダメだぞ

SQLServer(64ビット)入れたサーバに、32ビットACCESSも入れたらなら
ACEの64ってサポートされてないはず

どうしてもやりたいなら>>605のリンク先
0611NAME IS NULL
垢版 |
2017/12/28(木) 03:44:32.78ID:???
>>601
ALTER TABLEでLOCK_ESCALATION = DISABLE したとしても
ロックエスカレーションが完全に禁止されるわけじゃないぞ

そもそも、そのselectとupdateは同じトランザクションなのか?
分離レベルは何でやってるのとか色々考慮点はあるんだが
0612NAME IS NULL
垢版 |
2017/12/28(木) 04:16:09.80ID:???
>>602
インテントロックは行レベルで取得されない気がしたんだがなぁ
そもそも、ページにIXかかっても、そのページにIXロックかけれるんだぜ
(もちろん行単位のロックが競合しないとか条件はあるが)
0613601
垢版 |
2017/12/28(木) 09:30:08.82ID:???
>>603 >>611
selectは行ロック不要です。

ただ問題としたいのは
最初のupdateにより、その1行はロックされるのは当然にして
全く別の行のSELECTができなくなる(ロックされて読めない)、っていう挙動が解せないという話です。

たった1行のupdateに対して、かなり広範囲にロックかかってる気がしてならないのです
0614NAME IS NULL
垢版 |
2017/12/28(木) 09:33:45.08ID:???
一つ考えられるのは、
updateで1行を更新するとき、その項目はインデックス(非クラスタ)の一部になってます。

まさかインデックスに使われている項目を更新すると
さながらテーブルロックのような状態になるなんてことないですよね?
0615NAME IS NULL
垢版 |
2017/12/28(木) 13:00:00.38ID:???
>>614
インデックスの項目更新したらインデックスの再構成しないと遅くなりそう
インサートとデリートでインデックス項目変更したほうがいいんじゃね
0616NAME IS NULL
垢版 |
2017/12/28(木) 16:51:57.21ID:???
>>613
だからIXロックはIXロックをブロックしない
IXロックがブロックの直接の原因じゃない

たとえばファントムリード防止したかったら、範囲ロックせざるを得ないんだが
そのあたり理解してる?
■ このスレッドは過去ログ倉庫に格納されています

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