X



トップページDB@2ch掲示板
1002コメント327KB
Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001NAME IS NULL
垢版 |
2016/05/29(日) 16:50:08.13ID:dqKJQypQ
Microsoft SQL Server (Transact-SQL) の総合スレッドです。

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

過去スレとかめんどいから誰か適当に貼って
0852NAME IS NULL
垢版 |
2018/06/24(日) 19:40:37.73ID:???
>>851
>次々タブが増えて

JaneStyleみたいにタブが横方向に表示しきれなくなるたびに縦方向に1段増やすようにして欲しいね
0853NAME IS NULL
垢版 |
2018/06/24(日) 23:23:46.74ID:???
昔はエンドユーザーがSQLを投げていた。あな恐ろしや
0854NAME IS NULL
垢版 |
2018/06/30(土) 10:49:48.52ID:???
bcp はデータのインポート、エクスポートが主目的。
sqlcmd は SSMS の簡易なCUI版アプリケーション。オラクルでいうところの sqlplus。

っていう位置づけでよろしいか。
0855NAME IS NULL
垢版 |
2018/07/01(日) 13:16:46.05ID:iOtlwpag
>>854
bcpはOracle Databaseで言えばSQL*Loaderにあたるもの。
0856NAME IS NULL
垢版 |
2018/07/04(水) 22:27:52.09ID:???
最近は、mssql-cli というのもあるね
0857NAME IS NULL
垢版 |
2018/07/08(日) 22:24:33.92ID:???
>>854
どっちも不便だからsqlps使うといいよ
0858NAME IS NULL
垢版 |
2018/07/11(水) 01:23:22.13ID:???
>>853
select権限だけなんだから好きにしろって話だろw
0859NAME IS NULL
垢版 |
2018/07/12(木) 12:54:12.43ID:/YTA8M6s
【上流きどり、都民″】 マ7トLーヤ『大洪水は都会人の弱者切捨ての結果、大地震は核爆発の結果』
http://rosie.5ch.net/test/read.cgi/liveplus/1531363082/l50


豪雨のどさくさにカジノ法案強行、火事場泥棒!
0860NAME IS NULL
垢版 |
2018/07/12(木) 21:34:55.74ID:RO0MxO/p
一日に数件のレコード(数百文字くらい)が新規に追加されるDBなのだが、
追加されたタイミングで自分宛てに通知メールを送ったり出来ますか?
メール本文には追加されたテキストデータが有れば尚良し。
0861NAME IS NULL
垢版 |
2018/07/13(金) 19:38:57.79ID:???
前のSQL Mail 今はデータベースメールって言うらしい でメール送信はできる

トリガー仕込んでやればできるんじゃね
0862NAME IS NULL
垢版 |
2018/07/14(土) 00:07:50.29ID:aYAJ4wRd
>>861
ありがとござんした。
0863NAME IS NULL
垢版 |
2018/07/20(金) 18:14:47.36ID:???
プロシージャでSELECTの結果を返してるんですが、INFORMATION_SCHEMAなどで、何個のSELECT結果を返してるかを、調べる方法はありませんか?
やっぱり、実行しないと厳しいですかね
0864NAME IS NULL
垢版 |
2018/07/21(土) 13:29:57.03ID:???
何個のSELECT結果ってどういうことだ
0865NAME IS NULL
垢版 |
2018/07/21(土) 14:37:14.53ID:???
プロシージャ内で
select * from table1
select * from table2
と書くと2つのSELECT結果が返ってくると思うんですが、いくつのSELECT結果が返ってくるかが知りたいです。
この場合、2つです。
ちなみに、.netを使ってます
0866NAME IS NULL
垢版 |
2018/07/21(土) 16:44:00.45ID:???
はっきりいって、それを知る意味がわからん。
0867NAME IS NULL
垢版 |
2018/07/21(土) 17:10:38.16ID:???
プロシジャってのが何を指してるかわからんが
そのSQLが静的なら、そのSQL見ればわかるし
動的に生成してるなら、動的に生成するロジックでわかるとおもうが
0868NAME IS NULL
垢版 |
2018/07/21(土) 17:17:54.97ID:???
複数 レコードセット
でググれ
0869NAME IS NULL
垢版 |
2018/07/21(土) 17:26:51.48ID:???
「俺が必要な機能が用意されてないのはおかしい」って思ってる奴が定期的に湧いてくる不思議
0870NAME IS NULL
垢版 |
2018/07/21(土) 18:39:30.83ID:OaX/dGdR
>>865
やってみればとりあえず分かるだろうに。
0871NAME IS NULL
垢版 |
2018/07/21(土) 19:12:18.09ID:???
Oracleだと、パラメータのRefcursorの数でわかるんですが、SqlServerでは分からないんですね
0872NAME IS NULL
垢版 |
2018/07/21(土) 19:35:43.12ID:???
>>871
パラメタで返すならパラメタ見れば同じようにわかるけど?

結果セットで複数返したときならクライアント側ライブラリの話だが
ADO.NETのスレってなかったっけ?
ざっと見た感じではNextResultで自分で数えないとダメっぽいなぁ
0873NAME IS NULL
垢版 |
2018/07/21(土) 20:42:46.11ID:???
>>872
SqlServerにはCursorの引数ないから、実際に実行するしかなさそうですね
ありがとうございました。
0874NAME IS NULL
垢版 |
2018/07/22(日) 00:56:34.48ID:???
いやSQL Sevrerでもカーソル引数にできたはずだが、と思って調べたが
できるけど、T-SQLからしか呼べないのか

つか引数で指定するってことは、ストアド作成時に数は決まってるわけだが
0875NAME IS NULL
垢版 |
2018/07/22(日) 01:03:32.64ID:???
いやSQL Sevrerでもカーソル引数にできたはずだが、と思って調べたが
できるけど、T-SQLからしか呼べないのか

つか引数で指定するってことは、ストアド作成時に数は決まってるわけだが
0876NAME IS NULL
垢版 |
2018/07/25(水) 10:18:39.05ID:dCc9syc1
OS:Windows server 2008R2
DB:SQL server 2008R2

で動くアプリケーションソフトがあります。

これを、以下の環境にDBを移行しました。

OS:Windows server 2012R2
DB:SQL server 2016

CPU、メモリ数、HDDなどハードウェアの条件は全く同一なのに、
アプリケーションからのデータの閲覧、検索、修正、上書き
などの動きが見違えるほど速くなりました。

SQL server のバージョンが新しくなった効果でしょうか?
0877NAME IS NULL
垢版 |
2018/07/25(水) 10:41:42.64ID:???
HDD同じって、同じ規格で同じスピードのまったく同一の型番のディスクだよな

逆に今のスピードが本来の性能で、古いほうが遅くなってたと考える方が妥当じゃね
0879NAME IS NULL
垢版 |
2018/07/25(水) 10:58:23.73ID:dCc9syc1
>>877
ハードディスクは全く同じ型番です

現行システムが動いているサーバと全く同じ機種(スペック)のサーバが
存在していて、今回移行テストに使用しています
ハードウェアの条件が同じで、動きがこんなにも違うので、SQL serverが
劇的に改善されているのかなと思いまして
0880NAME IS NULL
垢版 |
2018/07/25(水) 19:53:09.80ID:???
移行元と先のデータ件数は同じなの?
件数が同等であれば、
物理ファイルの断片化の解消
インデックスおよび統計の更新
等が考えられる。
0881NAME IS NULL
垢版 |
2018/07/25(水) 20:04:51.15ID:???
どうせインデックスがぐちゃぐちゃになっていたという落ちだろ
インデックスの再構成とかしていたのかだな
0882NAME IS NULL
垢版 |
2018/07/25(水) 22:13:41.70ID:dCc9syc1
>>880
データ件数は全く同じです
SQL server 2008R2のデータベース完全バックアップを取って、
SQL server 2016に復元し、アプリケーションの接続先データベースを
2016にしただけで動きが速くなりました

>>881
インデックスの再構成、再構築はメンテナンスプランで毎日実行して
いましたが、統計の更新は毎日行う必要ないと開発部から聞いていたので
月1回程度行ってました
0883NAME IS NULL
垢版 |
2018/07/25(水) 23:43:20.55ID:???
2008と2016だと、エディション同じならそう大きな速度差は出ない気がするけどなぁ
そもそものデータファイルがフラグメントしてたとかじゃないのか
ま、早くなったんならよかったんじゃね
0884NAME IS NULL
垢版 |
2018/07/26(木) 06:15:55.29ID:???
>>882
2008R2のデータベース完全バックアップを、
2008R2にそのまま復元すれば早くなる可能性大だな
0885NAME IS NULL
垢版 |
2018/07/26(木) 11:24:28.64ID:???
クエリプランが変わったから速くなったと仮定すると、基数推定のバージョンが変わったことによる可能性もある
検証する余裕があるなら2016のほうにトレースフラグ9481セットして再起動して、旧バージョンで動かしてみるのもありかと
0886NAME IS NULL
垢版 |
2018/07/26(木) 12:26:11.40ID:???
2008R2ではメモリー制限設定してたのに2016ではディフォルトで使ってるとか
まあ2008R2で調査する気ないんなら
ラッキー、持ってる俺は違うな
とでも思ってりゃいい
0887NAME IS NULL
垢版 |
2018/07/26(木) 12:48:46.96ID:???
あるいはmaxdop指定してるとかね
テスト用だとその辺デフォルトでやっちゃいかねないからな
で、いざ本番用にとちゃんと設定したらテストの時のパフォがでないっていう
0888NAME IS NULL
垢版 |
2018/07/26(木) 12:53:31.13ID:???
maxdopで思い出したけど2016ってたしかデフォルト0じゃなくてインストール時にインストーラが設定するんだっけ
あとtempdbも数指定できたよな
0889NAME IS NULL
垢版 |
2018/07/27(金) 00:55:38.36ID:???
以下のFunctionを作成し
create function dbo.fncA
returns varchar2
as
begin
return 'asdf'
end

以下のsqlで呼ぶと、結果がaとしか返って来ないんですが、asdfと返すにはどうしたら良いでしょうか?
select dbo.fncA()
0890NAME IS NULL
垢版 |
2018/07/27(金) 04:23:27.78ID:???
SQL Serverにvarchar2なんてないだろ
自分でvarchar (1)とかで定義してるんじゃないのか
0891NAME IS NULL
垢版 |
2018/07/27(金) 07:33:42.56ID:???
>>889
戻り値に桁数していしないからじゃないかな
0892NAME IS NULL
垢版 |
2018/07/27(金) 08:27:59.57ID:???
俺も桁数しなきゃ
0893NAME IS NULL
垢版 |
2018/07/27(金) 15:53:18.16ID:???
SELECT
M.ID
,(SELECT A FROM テーブル値関数(M.ID, M.DATE)) AS A
,(SELECT B FROM テーブル値関数(M.ID, M.DATE)) AS B
,(略)
FROM M
WHERE (略)

こういう風にテーブル値関数を使うと、テーブルM・1行当たり 2回 動いてしまうと思います。
構造体かTUPLE型か、そういう風な概念を使って、効率的に動かす手段はないでしょうか?
0894NAME IS NULL
垢版 |
2018/07/27(金) 19:43:37.80ID:???
その関数が何してるかしらんが、それテーブル値関数の必要ないんじゃね
関数が2行以上返したら実行時エラー吐くんじゃね

実行時の効率もとめるなら関数じゃなくてビューにしてJOINしろよ
テーブル値関数とでもJOINはできるはずだけどな
0895NAME IS NULL
垢版 |
2018/07/28(土) 13:20:30.52ID:tm98Iqt0
>>882
そもそもあんたは設定が同じかどうかも確認せずに比較している。

あなたのいう同じは同じではないと思うよ。
0896NAME IS NULL
垢版 |
2018/08/01(水) 21:41:38.16ID:???
質問なのですが、SQLでファイルの存在まで確認するのは不可能でしょうか?

例えば

SELECT *
FROM T_Anken
WHERE AnkenID = '00123'
AND FileExist('C:\AnkenFile\00123.txt')

みたいなことをしたいんですが、難しいですかね?
0898NAME IS NULL
垢版 |
2018/08/02(木) 20:55:49.33ID:???
データベースのバックアップを定期的に取りたい、っていう場合、
.mdf ファイルだけバックアップしておけばOK?
SSMSの機能は使わず、ファイルのバックアップという意味で。

あと、巨大な .ldf ファイルがあるんだけど、これ削除してよい?
0899NAME IS NULL
垢版 |
2018/08/02(木) 22:02:05.14ID:mcP8wWdh
>>898
mdfとldfはセットだ
復旧モデル
BACKUP DATABASE
DBCC SHRINKFILE
とかで検索
0900NAME IS NULL
垢版 |
2018/08/03(金) 00:13:09.11ID:???
復旧モデル単純にすることからだな
そんな質問するとこからしてトランザクションログから復旧する要件なんてなかろう
0901NAME IS NULL
垢版 |
2018/08/03(金) 14:34:29.02ID:???
>>899 サンクス。ldf が2GBあるんだよ、これ消したい。

>>900 そうそう。localDB で自分のPC内で遊びでやってるだけ。
でもPCや 保存先のSSD がダメになった時のことを考えて定期的に外部にバックアップ取りたいのよ。
0902NAME IS NULL
垢版 |
2018/08/03(金) 14:36:16.45ID:???
ログが肥大すんのは復旧モデルが「完全」だからだ「単純」に変えろ
0903NAME IS NULL
垢版 |
2018/08/03(金) 15:46:02.26ID:???
mdfだけでも保証はされないけど一応復旧できるんだっけ?
サービス停止するかデタッチしないとコピーできんかったと思うし、バックアップとるにもDB複製ふるにも普通にバックアップするほうがお手軽だから忘れちゃった
0904NAME IS NULL
垢版 |
2018/08/03(金) 21:40:23.92ID:???
>>903
> サービス停止するかデタッチしないとコピーできんかったと思うし
コピーはできるけど役に立たないデータがコピーされるだけ
0905NAME IS NULL
垢版 |
2018/08/04(土) 03:34:48.90ID:???
「単純」にして毎日夜間バックアップの一週間ローテ(5世代)とかでやってる企業も多いね。
0906NAME IS NULL
垢版 |
2018/08/04(土) 03:53:35.36ID:???
圧縮あるしサイズ小さけりゃ差分とか考えなくていいからな
うちはたまにテストや確認で○時のときのDBを検証環境に作ってって要望がくるから完全にしてる
0907NAME IS NULL
垢版 |
2018/08/04(土) 09:49:44.89ID:???
結論としては、

・エクスプローラ上からのファイルコピー等でのDBバックアップは不可
 (ファイルコピーはできるがDBとして復元できない)

でよいの?
0908NAME IS NULL
垢版 |
2018/08/04(土) 13:14:32.38ID:???
ファイルロックされててコピーも出来ないんじゃ
0909NAME IS NULL
垢版 |
2018/08/04(土) 13:42:01.94ID:???
>>907
デタッチすればファイルコピー出来るし、コピーしたものを他のSQL Server入ったPCで復元(アタッチ)することも出来る
0910NAME IS NULL
垢版 |
2018/08/04(土) 20:08:07.47ID:???
VSS使ってMDF,LDF取得はよくしている
0911NAME IS NULL
垢版 |
2018/08/05(日) 22:49:40.30ID:???
>>907
DB停止状態(コールドバックアップ)なら可能
0912NAME IS NULL
垢版 |
2018/08/07(火) 20:01:05.52ID:L4EDfhvX
リレーショナルデータベースがそんな単純なものだと思っているやつは、Windowsもファイルのコピーで別のハードディスクに移せると思っているんだろうな。
0913NAME IS NULL
垢版 |
2018/08/07(火) 20:12:13.66ID:???
パーソナルユースの場合は単純な方が利点が多い
0914NAME IS NULL
垢版 |
2018/08/07(火) 23:40:21.32ID:???
MSのAccessとか、あと開発とかしたことないけどSQLiteとか、お手軽に使えるのもあるからねえ
そういうのしか知らないとぴんとこないかもな
0916NAME IS NULL
垢版 |
2018/08/08(水) 00:39:43.49ID:???
データベースじゃなくてDBMSって言ってほしいがな
0917NAME IS NULL
垢版 |
2018/08/08(水) 06:18:27.55ID:???
>>914
SQL-Serverだってmdf, ldfをコピーするだけなら大して変わらん
MS-AccessとかSQLiteだって稼働中にコピーしたらガラクタになるのも同じ
0918NAME IS NULL
垢版 |
2018/08/08(水) 06:20:49.10ID:???
>>916
DBMSはどっちかって言うとSQL-Server本体の方
今の話はデータファイルの方だからDBMSはちょっとピントずれてる
0919NAME IS NULL
垢版 |
2018/08/09(木) 10:14:10.09ID:jylyPhQF
>>893
クロスアプライしろ
0920NAME IS NULL
垢版 |
2018/08/11(土) 17:50:53.85ID:hw5PU5RO
>>915
SQLiteとSQL ServerやOracle Databaseを比べるのはおかしい。

自転車とリニアモーターカーが同じだと言っているようなもの。
0921NAME IS NULL
垢版 |
2018/08/11(土) 18:28:42.16ID:???
>>920
>>912が「リレーショナルデータベース」と言っていることに対するツッコミやろアホか
0922NAME IS NULL
垢版 |
2018/08/12(日) 01:17:15.53ID:444bh0X0
>>921
RDBMSとリレーショナルデータベースをわざわざ言い分けるのはよほどの専門家同士の話で、同義ととらえるか、むしろRDBMSでは一般人には意味が伝わらないから避ける。
0923NAME IS NULL
垢版 |
2018/08/12(日) 07:07:04.18ID:HjxXSimm
用語の意味で紛糾する初心者スレ微笑ましいなw
0925NAME IS NULL
垢版 |
2018/08/12(日) 18:42:27.62ID:cfFh3cqu
リレーショナルデータベースにかわりがない。リレーショナルデータベースの定義を知らないのか?
0926NAME IS NULL
垢版 |
2018/08/12(日) 18:43:58.55ID:cfFh3cqu
関係データベースと言わないと調べてもわからないかな?
0927NAME IS NULL
垢版 |
2018/08/12(日) 18:56:05.94ID:???
なんかまたマウント取りに必死な奴が来たな
0928NAME IS NULL
垢版 |
2018/08/12(日) 19:03:57.12ID:???
厳密な定義の話は難しいが、データベースファイルをコピーする話ならDBMSのほうが適切じゃないのか?
なんで稼働中にコピーしたらダメなんって問われたらリレーショナルデータベースの「管理」の話になってくるでしょ
0929NAME IS NULL
垢版 |
2018/08/12(日) 19:46:20.07ID:???
DBMSに限らず内容を書き換えてるファイルをコピーしたら一貫性が保てないのは常識
0930NAME IS NULL
垢版 |
2018/08/12(日) 21:58:36.58ID:???
それはそうなんだけど、それ言い出したらファイルコピーという一点において、>>912の「リレーショナルデータベースがそんな単純なもの〜」という発言が単純なテキストファイルとどう違うのってことになる
いや、データ更新時のデータ保証まで考えるなら君の言ってることは正しいし、そう言いたいならそれでいいけど
0931NAME IS NULL
垢版 |
2018/08/12(日) 22:02:25.40ID:???
>>912がおかしいって言いたいだけ
DBMSって言っても単なるアプリケーションソフトウェアだし
0933NAME IS NULL
垢版 |
2018/08/12(日) 22:44:09.95ID:???
いま話になってるのはその1アプリケーションのデータファイルの話
それをリレーショナルデータベースの話と言うのはあきらかな間違い
0934NAME IS NULL
垢版 |
2018/08/12(日) 22:57:18.60ID:cfFh3cqu
>>931
あなたが思っている製品はそんなものだから、そう思っているんでしょう?

Oracle Databaseをよく知っているなら、あなたのような発言はできない。
0935NAME IS NULL
垢版 |
2018/08/12(日) 22:58:57.47ID:cfFh3cqu
>>930
実際にMySQLはデータファイルがただのファイルだぞ。

Oracle Databaseだったらよほどの知識がないと触ってもいけないどころか、ASM構成だったら触れもしない。
0936NAME IS NULL
垢版 |
2018/08/12(日) 23:01:10.13ID:cfFh3cqu
>>933
誰がそんなことを書いたのか?どこにも見当たらない。SQLiteにデータベース管理システムがないと言い張ったやつがいただけ。

データベース管理システムのない有名な製品なんて俺はオタクではないので知らない。
0937NAME IS NULL
垢版 |
2018/08/12(日) 23:09:42.28ID:cfFh3cqu
かたくななまでに自分の非を認めない人というのがいます。何か責任を問われることが起こっても、誰か人のせいにしたり環境のせいにしたりします。

自分に非があることを素直に認められないのはどうしてなのか、その心理にはこんなことが隠されているようです。

https://tabi-labo.com/213871/not-apologize-ppl
0938NAME IS NULL
垢版 |
2018/08/12(日) 23:13:57.67ID:???
データファイルコピーの話に対して、
リレーショナルデータベースがそんな単純なものだと思っているやつは云々言ってたやつがいたと思ったんだが
0939NAME IS NULL
垢版 |
2018/08/12(日) 23:15:56.53ID:???
>>934
ん?
普通のサーバーで稼働してるOracleなら単なるアプリケーションだし、稼働中に単にコピーしたら整合性は取れんよ
逆に止まってる状態ならデータファイルコピーで普通にバックアップは取れる
オラクル 物理バックアップ
とかでググってみ
0940NAME IS NULL
垢版 |
2018/08/12(日) 23:24:16.55ID:???
>>934>>935
Oracleといってる時点でRDBというよりRDBMSの話だろ、自分でいってて気づかないのか?
0942NAME IS NULL
垢版 |
2018/08/12(日) 23:40:07.12ID:cfFh3cqu
>>940
RDBでRDBMSがないものを挙げてください。きっと答えられませんよね?
0944NAME IS NULL
垢版 |
2018/08/12(日) 23:43:52.06ID:cfFh3cqu
>>939
Oracle Databaseはシャットダウンしていたとしても、そのままデータファイルのコピーだけでは済みません。

無知にもほどがあるでしょうに。

だいたいRDBMSをただのアプリケーションだと言い放つのは、よほどの素人でしょうが。
0945NAME IS NULL
垢版 |
2018/08/12(日) 23:47:08.31ID:cfFh3cqu
リレーショナルデータベースとリレーショナルデータベース管理システムが別個というしつこい主張は何がしたいのか?

SQL Serverの場合、別にインストールするManagement Studioならこういう誤解は理解できる。

しかしManagement Studioはただの管理ツールであって、データベース管理システムそのものではない。
0946NAME IS NULL
垢版 |
2018/08/12(日) 23:50:36.87ID:???
>>945
あたり前だろうが馬鹿かお前は
いうにことかいてManagement Studio出してくるとは思わんかったわ
いいからRDBMSがないRDBあげて
0947NAME IS NULL
垢版 |
2018/08/12(日) 23:54:03.34ID:???
つまりRDBとRDBMSの区別のつかない人が暴れてるだけか
0948NAME IS NULL
垢版 |
2018/08/12(日) 23:57:18.90ID:???
もう一回書くけど、まさかこの話の流れでManagement Studio出てくるとはなあ
ここ数年で仕事に関する話で一番度肝抜かれたかもしれん、完敗だわもう
0949NAME IS NULL
垢版 |
2018/08/13(月) 00:25:35.14ID:???
>>945
機会があるなら、一度サーバーとストレージ全部ぶっ壊れたと想定して外部ディスクやテープにしかないバックアップから全部戻すなんてことやってみればいい
そういうのしてると、勝手さえわかれば所詮そんなものって気付く
0950NAME IS NULL
垢版 |
2018/08/13(月) 02:28:20.30ID:???
>>944
> Oracle Databaseはシャットダウンしていたとしても、そのままデータファイルのコピーだけでは済みません。
わざわざキーワード書いてあるんだからちゃんとググれよ
http://www.atmarkit.co.jp/ait/spv/0606/30/news130.html

> だいたいRDBMSをただのアプリケーションだと言い放つのは、よほどの素人でしょうが。
よくわかってない人はなぜかコンパイラとかDBMSとかを特別なものとして扱いたがる w
Oracleのインストールとかしたことないでしょ?
単に使うだけならOfficeのインストールとたいして変わらんよ
まあAMSとかRACとか言い出したら設定は死ぬほど面倒だけどな
0951NAME IS NULL
垢版 |
2018/08/13(月) 08:48:35.11ID:???
>>937
自己紹介w


毎回、レベルの低いところでマウント取ろうとするから、周りと会話が噛み合わなくなることに早く気づきなよ
レス数が950を超えています。1000を超えると書き込みができなくなります。

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