Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
Microsoft SQL Server (Transact-SQL) の総合スレッドです。
・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/
過去スレとかめんどいから誰か適当に貼って >>851
>次々タブが増えて
JaneStyleみたいにタブが横方向に表示しきれなくなるたびに縦方向に1段増やすようにして欲しいね 昔はエンドユーザーがSQLを投げていた。あな恐ろしや bcp はデータのインポート、エクスポートが主目的。
sqlcmd は SSMS の簡易なCUI版アプリケーション。オラクルでいうところの sqlplus。
っていう位置づけでよろしいか。 >>854
bcpはOracle Databaseで言えばSQL*Loaderにあたるもの。 >>854
どっちも不便だからsqlps使うといいよ >>853
select権限だけなんだから好きにしろって話だろw 【上流きどり、都民″】 マ7トLーヤ『大洪水は都会人の弱者切捨ての結果、大地震は核爆発の結果』
http://rosie.5ch.net/test/read.cgi/liveplus/1531363082/l50
豪雨のどさくさにカジノ法案強行、火事場泥棒! 一日に数件のレコード(数百文字くらい)が新規に追加されるDBなのだが、
追加されたタイミングで自分宛てに通知メールを送ったり出来ますか?
メール本文には追加されたテキストデータが有れば尚良し。 前のSQL Mail 今はデータベースメールって言うらしい でメール送信はできる
トリガー仕込んでやればできるんじゃね プロシージャでSELECTの結果を返してるんですが、INFORMATION_SCHEMAなどで、何個のSELECT結果を返してるかを、調べる方法はありませんか?
やっぱり、実行しないと厳しいですかね プロシージャ内で
select * from table1
select * from table2
と書くと2つのSELECT結果が返ってくると思うんですが、いくつのSELECT結果が返ってくるかが知りたいです。
この場合、2つです。
ちなみに、.netを使ってます プロシジャってのが何を指してるかわからんが
そのSQLが静的なら、そのSQL見ればわかるし
動的に生成してるなら、動的に生成するロジックでわかるとおもうが 「俺が必要な機能が用意されてないのはおかしい」って思ってる奴が定期的に湧いてくる不思議 >>865
やってみればとりあえず分かるだろうに。 Oracleだと、パラメータのRefcursorの数でわかるんですが、SqlServerでは分からないんですね >>871
パラメタで返すならパラメタ見れば同じようにわかるけど?
結果セットで複数返したときならクライアント側ライブラリの話だが
ADO.NETのスレってなかったっけ?
ざっと見た感じではNextResultで自分で数えないとダメっぽいなぁ >>872
SqlServerにはCursorの引数ないから、実際に実行するしかなさそうですね
ありがとうございました。 いやSQL Sevrerでもカーソル引数にできたはずだが、と思って調べたが
できるけど、T-SQLからしか呼べないのか
つか引数で指定するってことは、ストアド作成時に数は決まってるわけだが いやSQL Sevrerでもカーソル引数にできたはずだが、と思って調べたが
できるけど、T-SQLからしか呼べないのか
つか引数で指定するってことは、ストアド作成時に数は決まってるわけだが OS:Windows server 2008R2
DB:SQL server 2008R2
で動くアプリケーションソフトがあります。
これを、以下の環境にDBを移行しました。
OS:Windows server 2012R2
DB:SQL server 2016
CPU、メモリ数、HDDなどハードウェアの条件は全く同一なのに、
アプリケーションからのデータの閲覧、検索、修正、上書き
などの動きが見違えるほど速くなりました。
SQL server のバージョンが新しくなった効果でしょうか? HDD同じって、同じ規格で同じスピードのまったく同一の型番のディスクだよな
逆に今のスピードが本来の性能で、古いほうが遅くなってたと考える方が妥当じゃね >>877
ハードディスクは全く同じ型番です
現行システムが動いているサーバと全く同じ機種(スペック)のサーバが
存在していて、今回移行テストに使用しています
ハードウェアの条件が同じで、動きがこんなにも違うので、SQL serverが
劇的に改善されているのかなと思いまして 移行元と先のデータ件数は同じなの?
件数が同等であれば、
物理ファイルの断片化の解消
インデックスおよび統計の更新
等が考えられる。 どうせインデックスがぐちゃぐちゃになっていたという落ちだろ
インデックスの再構成とかしていたのかだな >>880
データ件数は全く同じです
SQL server 2008R2のデータベース完全バックアップを取って、
SQL server 2016に復元し、アプリケーションの接続先データベースを
2016にしただけで動きが速くなりました
>>881
インデックスの再構成、再構築はメンテナンスプランで毎日実行して
いましたが、統計の更新は毎日行う必要ないと開発部から聞いていたので
月1回程度行ってました 2008と2016だと、エディション同じならそう大きな速度差は出ない気がするけどなぁ
そもそものデータファイルがフラグメントしてたとかじゃないのか
ま、早くなったんならよかったんじゃね >>882
2008R2のデータベース完全バックアップを、
2008R2にそのまま復元すれば早くなる可能性大だな クエリプランが変わったから速くなったと仮定すると、基数推定のバージョンが変わったことによる可能性もある
検証する余裕があるなら2016のほうにトレースフラグ9481セットして再起動して、旧バージョンで動かしてみるのもありかと 2008R2ではメモリー制限設定してたのに2016ではディフォルトで使ってるとか
まあ2008R2で調査する気ないんなら
ラッキー、持ってる俺は違うな
とでも思ってりゃいい あるいはmaxdop指定してるとかね
テスト用だとその辺デフォルトでやっちゃいかねないからな
で、いざ本番用にとちゃんと設定したらテストの時のパフォがでないっていう maxdopで思い出したけど2016ってたしかデフォルト0じゃなくてインストール時にインストーラが設定するんだっけ
あとtempdbも数指定できたよな 以下のFunctionを作成し
create function dbo.fncA
returns varchar2
as
begin
return 'asdf'
end
以下のsqlで呼ぶと、結果がaとしか返って来ないんですが、asdfと返すにはどうしたら良いでしょうか?
select dbo.fncA() SQL Serverにvarchar2なんてないだろ
自分でvarchar (1)とかで定義してるんじゃないのか >>889
戻り値に桁数していしないからじゃないかな 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型か、そういう風な概念を使って、効率的に動かす手段はないでしょうか? その関数が何してるかしらんが、それテーブル値関数の必要ないんじゃね
関数が2行以上返したら実行時エラー吐くんじゃね
実行時の効率もとめるなら関数じゃなくてビューにしてJOINしろよ
テーブル値関数とでもJOINはできるはずだけどな >>882
そもそもあんたは設定が同じかどうかも確認せずに比較している。
あなたのいう同じは同じではないと思うよ。 質問なのですが、SQLでファイルの存在まで確認するのは不可能でしょうか?
例えば
SELECT *
FROM T_Anken
WHERE AnkenID = '00123'
AND FileExist('C:\AnkenFile\00123.txt')
みたいなことをしたいんですが、難しいですかね? データベースのバックアップを定期的に取りたい、っていう場合、
.mdf ファイルだけバックアップしておけばOK?
SSMSの機能は使わず、ファイルのバックアップという意味で。
あと、巨大な .ldf ファイルがあるんだけど、これ削除してよい? >>898
mdfとldfはセットだ
復旧モデル
BACKUP DATABASE
DBCC SHRINKFILE
とかで検索 復旧モデル単純にすることからだな
そんな質問するとこからしてトランザクションログから復旧する要件なんてなかろう >>899 サンクス。ldf が2GBあるんだよ、これ消したい。
>>900 そうそう。localDB で自分のPC内で遊びでやってるだけ。
でもPCや 保存先のSSD がダメになった時のことを考えて定期的に外部にバックアップ取りたいのよ。 ログが肥大すんのは復旧モデルが「完全」だからだ「単純」に変えろ mdfだけでも保証はされないけど一応復旧できるんだっけ?
サービス停止するかデタッチしないとコピーできんかったと思うし、バックアップとるにもDB複製ふるにも普通にバックアップするほうがお手軽だから忘れちゃった >>903
> サービス停止するかデタッチしないとコピーできんかったと思うし
コピーはできるけど役に立たないデータがコピーされるだけ 「単純」にして毎日夜間バックアップの一週間ローテ(5世代)とかでやってる企業も多いね。 圧縮あるしサイズ小さけりゃ差分とか考えなくていいからな
うちはたまにテストや確認で○時のときのDBを検証環境に作ってって要望がくるから完全にしてる 結論としては、
・エクスプローラ上からのファイルコピー等でのDBバックアップは不可
(ファイルコピーはできるがDBとして復元できない)
でよいの? >>907
デタッチすればファイルコピー出来るし、コピーしたものを他のSQL Server入ったPCで復元(アタッチ)することも出来る >>907
DB停止状態(コールドバックアップ)なら可能 リレーショナルデータベースがそんな単純なものだと思っているやつは、Windowsもファイルのコピーで別のハードディスクに移せると思っているんだろうな。 MSのAccessとか、あと開発とかしたことないけどSQLiteとか、お手軽に使えるのもあるからねえ
そういうのしか知らないとぴんとこないかもな データベースじゃなくてDBMSって言ってほしいがな >>914
SQL-Serverだってmdf, ldfをコピーするだけなら大して変わらん
MS-AccessとかSQLiteだって稼働中にコピーしたらガラクタになるのも同じ >>916
DBMSはどっちかって言うとSQL-Server本体の方
今の話はデータファイルの方だからDBMSはちょっとピントずれてる >>915
SQLiteとSQL ServerやOracle Databaseを比べるのはおかしい。
自転車とリニアモーターカーが同じだと言っているようなもの。 >>920
>>912が「リレーショナルデータベース」と言っていることに対するツッコミやろアホか >>921
RDBMSとリレーショナルデータベースをわざわざ言い分けるのはよほどの専門家同士の話で、同義ととらえるか、むしろRDBMSでは一般人には意味が伝わらないから避ける。 リレーショナルデータベースにかわりがない。リレーショナルデータベースの定義を知らないのか? 関係データベースと言わないと調べてもわからないかな? 厳密な定義の話は難しいが、データベースファイルをコピーする話ならDBMSのほうが適切じゃないのか?
なんで稼働中にコピーしたらダメなんって問われたらリレーショナルデータベースの「管理」の話になってくるでしょ DBMSに限らず内容を書き換えてるファイルをコピーしたら一貫性が保てないのは常識 それはそうなんだけど、それ言い出したらファイルコピーという一点において、>>912の「リレーショナルデータベースがそんな単純なもの〜」という発言が単純なテキストファイルとどう違うのってことになる
いや、データ更新時のデータ保証まで考えるなら君の言ってることは正しいし、そう言いたいならそれでいいけど >>912がおかしいって言いたいだけ
DBMSって言っても単なるアプリケーションソフトウェアだし いま話になってるのはその1アプリケーションのデータファイルの話
それをリレーショナルデータベースの話と言うのはあきらかな間違い >>931
あなたが思っている製品はそんなものだから、そう思っているんでしょう?
Oracle Databaseをよく知っているなら、あなたのような発言はできない。 >>930
実際にMySQLはデータファイルがただのファイルだぞ。
Oracle Databaseだったらよほどの知識がないと触ってもいけないどころか、ASM構成だったら触れもしない。 >>933
誰がそんなことを書いたのか?どこにも見当たらない。SQLiteにデータベース管理システムがないと言い張ったやつがいただけ。
データベース管理システムのない有名な製品なんて俺はオタクではないので知らない。 かたくななまでに自分の非を認めない人というのがいます。何か責任を問われることが起こっても、誰か人のせいにしたり環境のせいにしたりします。
自分に非があることを素直に認められないのはどうしてなのか、その心理にはこんなことが隠されているようです。
https://tabi-labo.com/213871/not-apologize-ppl データファイルコピーの話に対して、
リレーショナルデータベースがそんな単純なものだと思っているやつは云々言ってたやつがいたと思ったんだが >>934
ん?
普通のサーバーで稼働してるOracleなら単なるアプリケーションだし、稼働中に単にコピーしたら整合性は取れんよ
逆に止まってる状態ならデータファイルコピーで普通にバックアップは取れる
オラクル 物理バックアップ
とかでググってみ >>934>>935
Oracleといってる時点でRDBというよりRDBMSの話だろ、自分でいってて気づかないのか? >>940
RDBでRDBMSがないものを挙げてください。きっと答えられませんよね? >>939
Oracle Databaseはシャットダウンしていたとしても、そのままデータファイルのコピーだけでは済みません。
無知にもほどがあるでしょうに。
だいたいRDBMSをただのアプリケーションだと言い放つのは、よほどの素人でしょうが。 リレーショナルデータベースとリレーショナルデータベース管理システムが別個というしつこい主張は何がしたいのか?
SQL Serverの場合、別にインストールするManagement Studioならこういう誤解は理解できる。
しかしManagement Studioはただの管理ツールであって、データベース管理システムそのものではない。 >>945
あたり前だろうが馬鹿かお前は
いうにことかいてManagement Studio出してくるとは思わんかったわ
いいからRDBMSがないRDBあげて つまりRDBとRDBMSの区別のつかない人が暴れてるだけか もう一回書くけど、まさかこの話の流れでManagement Studio出てくるとはなあ
ここ数年で仕事に関する話で一番度肝抜かれたかもしれん、完敗だわもう >>945
機会があるなら、一度サーバーとストレージ全部ぶっ壊れたと想定して外部ディスクやテープにしかないバックアップから全部戻すなんてことやってみればいい
そういうのしてると、勝手さえわかれば所詮そんなものって気付く >>944
> Oracle Databaseはシャットダウンしていたとしても、そのままデータファイルのコピーだけでは済みません。
わざわざキーワード書いてあるんだからちゃんとググれよ
http://www.atmarkit.co.jp/ait/spv/0606/30/news130.html
> だいたいRDBMSをただのアプリケーションだと言い放つのは、よほどの素人でしょうが。
よくわかってない人はなぜかコンパイラとかDBMSとかを特別なものとして扱いたがる w
Oracleのインストールとかしたことないでしょ?
単に使うだけならOfficeのインストールとたいして変わらんよ
まあAMSとかRACとか言い出したら設定は死ぬほど面倒だけどな >>937
自己紹介w
毎回、レベルの低いところでマウント取ろうとするから、周りと会話が噛み合わなくなることに早く気づきなよ レス数が950を超えています。1000を超えると書き込みができなくなります。