Microsoft SQL Server 総合スレ 11 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
>>671
同じ結果の処理を同じ手間で書けるなら、負荷は軽い方がいいに決まってるけど
で、その説明でどこがどう負荷かってるの?
まさかクエリキャッシュ効かないでコンパイル時間がとか言う気?
>>672
まあしかし、理想はそのへん意識しないでRDBMSに任せる事なんだろうとは思う
オプティマイザの動作を予想して奇妙なSQL書くのは本末転倒だし 久しぶりにアツいマウント合戦開幕したなw
どっちも負けろwwww SQL SERVER2014Expressが動いているWindowsサーバーのOSをクリーンインストール
する予定なのですが、データベースを丸ごとバックアップしておいて、あとで戻すなどは
可能ですか?ヒントを教えて下さい。DBのサイズは500MB 程度です。 リンクサーバー設定とかデータベースの設定とかもバックアップする方法ってないものか
ドライブごとバックアップするしかないのかな >>673
根本的にリレーショナルデータベースを分かってないのになぜ知ったかぶりをするのか?
リレーショナルデータベースは重い処理をしてるんだぞ?
リレーショナルデータベースの内部処理が見えないから、自分のしょぼいプログラムと比較にならないことをしていることに気づかない。 >>673
そもそもあんたの用語がおかしい。データベースを知らないと思う。データベースを使うのが精一杯で、リレーショナルデータベースの構造も知らないと思われる。
クエリキャッシュなんて言葉はデータベースエンジニアは使わない。 >>673
同じ結果でもいつも速いわけではない。統計情報の取得タイミング、データの傾向の変化で実行プランが最適にならない可能性もあれば、コストが高くても速いこともある。
バッファキャッシュの有無、データファイル読み書きタイミング、速度、OSのキャッシュ、ストレージのキャッシュ、ありとあらゆる条件で性能は決まるのであって、そのなかからどう処理されているかのSQL Serverの情報を元にSQL Serverが言っている処理情報の誤りまで判断して決めることだ。 定期的にわくよね。当たり前の一般論をすごいことのように語るID付いてるおっさん。 >>677
ありがとうございました。やってみます。 >>679
知らなかった。今度からmaster もバックアップする masterリストアするのは簡単じゃないから、再生成するスクリプト作って流すほうが楽かもよ 質問です。
顧客テーブルと売上テーブルがあり、顧客IDで紐付いています。
特定の条件の売上が無い(売上テーブルにレコードが存在しない)顧客のみを抽出するには、どのような方法が考えられるでしょうか?
仮テーブルに顧客テーブルの全レコードをコピーし「特定の条件の売上が有る」顧客を削除していく、という方法は思いつきましたが、SQL文のみで実現する方法はあるでしょうか?
無いものは抽出できない、とは思うのですが… >>689
自ら吐いた言霊に呪われとるやんw
無いのは売上
抽出するのは顧客
な? SELECT * FROM 顧客テーブル
WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)
みたいな風かな >>692
そういうINの使い方は悪手だよ
NOT EXISTSかLEFT JOINを使おう >>689
>>690で答え出てるけどないものを抽出するんじゃなくて、「売上に紐付かない顧客」を抽出するってこと >>694
そういうJOINの使い方は悪手だよ
NOT EXISTSを使おう exists は確かにわかりやすい記述だけど遅い
大量のデータで使うとサーバーが唸る
できるならinner joinでやったほうがいい
http://kkoudev.github.io/blog/2013/09/14/sql/ >>696
NOT EXISTSをINNER JOINにするのは無理だし
MySQLはNested Loopしか使えないからね
他の一般的RDBとは事情が違うよ >>695
NOT EXISTSのほうがパフォーマンスいいことのほうが多いけど
LEFT JOINが悪手ってわけでもないと思うけどな
少なくとも質問者はLEFT JOINを理解してない風なので
そっちからはじめたほうがいい みなさまありがとうございます。
LEFT JOINでできるとは思いませんでした…頭が硬いですね。
教えていただいたNOT EXISTSも調べたところまさにやりたいことでした。
何とかなりそうです。
ありがとうございました。 >>695
環境、データ、インデックスとかによって違うからお前さんみたいに盲信してるのが一番ヤバイ 経験上LEFT JOIN でIS NULLのほうが速い場合がほとんど >>692さんみたいな書き方を良くするんですが、これは遅いのですか? あっ、ただ自分の場合は
「WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)」
ではなく
「WHERE 顧客ID NOT IN (SELECT 顧客ID FROM 売上テーブル)」
と書きます。 売上げテーブルに顧客IDでインデックス貼ってあればそんなに遅くない気もする 692は自分だけど、後でみなさん言われるとおり
SELECT * FROM 顧客テーブル
WHERE NOT EXISTS (SELECT TOP 1 FROM 売上テーブル WHERE 顧客ID=顧客テーブル.顧客ID)
のほうが速そうだな 速いとか遅いとか気にしたいんならDBが適切にメンテされているかを考えるべきやな
SQLの表記のゆれなど考えるだけ無意味 NOT INの場合はパフォーマンス以前に
顧客IDがNOT NULLじゃないと意図した結果が得られない可能性がある
NOT NULLなら意図した結果が得られるけど、速度はDBの最適化に依存
INの最適化レベルが高いDBならNOT EXISTSと同程度の速度に場合もある
でもそうならない場合もあるからこういうケースでは基本使わない >>700
環境、データ、インデックスとかによって違うからお前さんみたいに
テストした環境でLEFT JOINが速いからLEFT JOINにしてしまう奴が一番ヤバイ >>710
うまい返ししたつもりなんだろうけどアホ晒してるだけやぞww >>711
普通に答えただけだけどうまかったか?w
マジかwセンスあんな俺www 単純なnot inならouter joinと同じ実行計画吐いたきがする >>714
だからたまたまその時その環境でそういう実行プランが作られたという経験を
後生大事に今生の知識として胸にしまいこんでも無駄だと言っておろうが
SQLはいつだってよりシンプルにより直接的にやりたい事を表現してる様に書くべきなんや >>712
誰もうまい返しとは言ってないぞ
日本語の理解力もないとな w >>716
は?こっちこそお前がうまい返しと言ったとは言っとらんが???
異次元の理解力だなお前…
というかアスペだなwww >>717
> というかアスペだなwww
自己紹介乙w 5chはROM専みたいな筆不精は、長文が書かれていると、時間をかけて書いていると思い込む。
世の中、超速で読み書きができる人間がいるのだよ。 仕事でやってるなら仕事が異常に速いひとを知ってるはずだけどな。並の人間の20倍、30倍くらい仕事が速い人もいる。 1.5人月で見積もられた仕事を1日で片付ける人か。
さすがにそれは見たことないわw >>726
そんな思考だから仕事遅いんだよ
できる人できない人の違いすら理解できてない 仮に1.5人月のコードを5000行とすると
1日でそれ書いて、さらに仕様書とかも書いてテストもするんやで?
めちゃくちゃ打つの速いやん >>731
何で考えても書く行数は変わらんのだけどw 無能な働き者の手による大量の無駄なコードは有能な怠け者の手による洗練された短いコードに劣る >>732
724が言ってるような並の人間より仕事が20倍30倍速いやつってのは
並の人間が5000行書かないと実現出来ない処理を200行程度書くだけで実現したりできるわけ
キーボードだってできるだけ打たなくていい方法を考える
見積もり時に書く行数がほぼ固定されてるような仕事してるなら
できるだけそこから早く抜け出すことだな >>735
それコードが圧縮されとるだけやんwコードゴルフかw
コードは20倍圧縮されても作業にかかる時間は速くなっとらんでそれwww お前らはどうしてスキルないくせに突飛な主張してマウントとりたがるんや?
俺は笑えるからこうして楽しんどるけど一般的にはみっともないだけやでw どれだけ優秀な人間だろうと、1.5人月で見積もった仕事を1日で片付けたらな
そもそもの見積もりがぼったくりすぎるだけだな メタプログラミングやコードジェネレーションを考えればいいと思うよ
できるやつは無駄を省いて機械に仕事をさせる
Paul GrahamのLispの話と同じ 新進気鋭の「グラフデータベース」って用途が思いつかないな RDBはグラフと相性悪いからな
用途が思いつかないうちは使う必要ない 一昔前の技術で言えば多次元DBと同じようなもん
RDBみたいにあらゆる所で使われる技術ではない グラフデータベース=ビッグデータ()
とか言ってると恥ずかしいよ 間違えて全データ消してしまったんですが
ldf/mdfファイルから消す直前のデータに戻す方法ってありますか? バックアップあるなら戻せばいいじゃん?
リカバリモデルにもよるけど bakファイルがなくてldf/mdfファイルだけの状態です 2017 Expressへ32bit windows7接続出来ますか? ありがとうございました。
WINDOWS認証ですが18456エラーが出ます、あとLOGを見ると明示的に指定されたデータベースを開けませんでした。
とあります、何が悪いのでしょうか?
今までは2005 EXPRESSでした。 何時のVerからかは忘れたが、今はマシン名\インスタンス名の形式で指定してやらんと繋がらない
例えばlocalhost\SQLEXPRESS >>755そうですか?試してみます、ありがとうございました。 >>754
そのエラーコード以外に状態コードが出てるでしょ
それ込みでググればだいたい原因分かるよ
Error: 18456, Severity: 14, State: 38. <―このStateの部分
メッセージから推測するとPermissionに問題ないなら
そのログインに指定されてるDefault Databaseがないんじゃないのかな?
存在するデータベースを指定してみれば切り分けできる SQL Server 2017 Express の localdb のみをインストールし、コマンドプロンプトから
sqllocaldb start MSSQLLocalDB
として開始しようとすると、
「プロシージャ エントリ ポイント BCryptKeyDerivation がダイナミック リンク ライブラリ bcrypt.dll から見つかりませんでした。」
と出て失敗します。
対処方法はありますか? Windows7 64bit です。
SQLServer2017構成マネージャーにも何も出てこないし、
SQL Server Management Studio で (localdb)\MSSQLLocalDB としても接続できず困っています。 >>759 ありがとうございます。
bcrypt.dll ファイル自体は system32 と SysWOW64 のどちらのフォルダにも存在しています。
SQL Server 2017 Express は、そもそも Windows7 はサポート外で、ただし localdb だけならいける、と
いうことなのでやってみたけど、やっぱダメなのか・・
SQL Server Management Studio をちょっと勉強したかったのだが。 >>760
「ただしlocaldbだけなら〜」はどこからの情報なのか >>761
これです→ http://diy-kagu.hatenablog.com/entry/2017/08/09/155801
記事は2016だけど、2017でも大丈夫だろうと。
自分の環境特有の理由かもしれない。
もう少しやってみてダメなら 2017 をアンインストールして 2016 で再度やってみる。
SQLの勉強でなくて、SQL Server Management Studio を勉強したい。 >>763 ありがとうございます。
2017バージョンの localDB と SSMS をアンインストール後、
2014バージョンの localDB と SSMS を入れ、SSMS から接続までできました。
これで SSMS の勉強ができます。 SQL Server 2016 expressで特定のテーブルのアクセスが異常に遅いのですが、何か原因はありますか?
特定のテーブルの情報
・データ50万件 (select count(*)だけで10秒かかる)
・頻繁にインサートしている
・主キーを設定していない
プログラムでDBに接続側がタイムアウトになるくらい何かが起きているようです。 sp_who2 をすると、サーバーに繋ぎに来てるコンピュータ名やプログラム名が見れますが
ドメインユーザー名を取得することできませんか。
SQL認証で、ユーザー/パスを全員共通にしてあるんですけど
各接続SPIDに対するドメインユーザー名が判別できるとありがたいんですが。
Windows認証だったら判別つくのですが、プログラムはSQL認証で使いたいです。
(ユーザーがもし SSMS で繋ぎにきたときにテーブル全開示になっちゃうのを防ぐため) >>765
俺、そのケースで散々パフォーマンスチューニングだのインデックス再構築だの設計変更だのしてたが、
最終的なオチはExpressのデータファイルの10GB制限に引っかかっててインデックス検索で1MB単位で容量の削除、自動拡張を繰り返してた、
というケースがあった。
今でも当時のことを思い出すと赤面するぐらい恥ずかしい思い出。 >>770
インサートで限界を突破して自動拡張が停止
→ロールバックされて容量が元に戻る
→ギリギリ容量が残ってるので自動拡張が…
以下、タイムアウトするまで(あるいは何とか入りきるまで)延々繰り返し
みたいな(ちょっと詳細省いたけど 自動拡張されたデータファイルのサイズはロールバックしても自動的に縮小されたりしなかったと思うんがだが
自動拡張に出来なくて空きがないならエラーで帰ってくるから、タイムアウトまで延々待たされるなんて事も無かったと思うけど SQL Server の参考書でいいやつってどれ?
SQL の文法解説じゃなくて、SQL Server 独特の文化とか、SSMS の操作法とか、そのあたりを学びたい。 >>774
公式DLの自習書シリーズが最強だと思う
ボリュームが多いが参考書臭さがなく実務より >>774
公式DLの自習書シリーズが最強だと思う
ボリュームが多いが参考書臭さがなく実務より >>774
あまりない。そこがSQL Serverの厳しいところ。 >>775 おお! 無料でこんなのあるんだ、ありがとう!
>>777 オラクルよりもマイナーなのかな? >>778
自習書は日本マイクロソフトが日本の会社に作らせたもの。
ただし手抜きや説明の偏り、一部は間違っているが、日本マイクロソフトのサポートの方もこれを参考にしている。
マイクロソフトはどの製品も作りっぱなしでマニュアルは自動翻訳のよくわからないものばかり。
Management StudioについてはどのRDBMSより経験がなくても直感的にわかりやすい。 >>774
SQL Server 2005、2008以降は大きく変わっていないから、特に翔泳社の本は役に立つよ。
最近のSQL Server本は本当に役に立たない。特にマイクロソフト公式本はひどい。
秀和システムの赤い本もひどい。 >>782
>マイクロソフトはどの製品も作りっぱなしでマニュアルは自動翻訳のよくわからないものばかり。 >>783
マイクロソフトのサイトを見たことがないの? M$日本の公式ドキュメントは「これは自動翻訳で生成されました」だらけなんだが
>>785はggrもしないらしい >>787
英語のドキュメント読むに決まってんだろ何言ってんの? >>787
ググった結果英語のドキュメントが出てこない世界に住んでるんだねすごいね 789の世界のgoogleは日本語の結果のみ表示ができないらしい >>792
ユーザーにわからせようとはしてない。外国人は基本的に不親切だから、この説明でわからない方が悪いというスタンス。 自動拡張されたデータを削除してもファイルサイズが大きいままなのですがどうすればサイズを小さくできますか? >>795ですがみなさん方法をご存知ないですか?
それとも削除した後からでは小さく出来ませんか? 最新のManagement studioが64bit OSしか
サポートしてないんだが、いったいマイクロソフトはどういうつもりなんだろう?
Linuxのサポートよりよっぽど大事だろう? >>800
それSQL Server本体とセットではないManagement Studioではないのか? >>800
> サポートしてないんだが、いったいマイクロソフトはどういうつもりなんだろう?
32bit OS でグダグダ言うクレーマーの相手はしませんと言う意思表示だろ >>804
会社で動いてるよ(Windows 7)
もうすぐ廃棄するけど >>805
win7にSQLを入れてDBサーバーとして使ってる訳じゃないでしょ? >>806
Visual Studio 入れてるから LocalDB 入ってるけど?
まあテスト用だけどね 立ち上がりきったらそう遅くねーけどな
立ち上げがVisualStudioより遅せーのはアホかと思うが たぶん若いやつだと思うが、起動に時間がかかるなら、それを考慮して起動中はべつのことをしてろよw >>808
起動もだが、実行中のプランを見るヤツとか、
重すぎてまともに動かない。
ロック状況見るヤツも無くなっちゃったし、
糞化がハンパない。 >>814
個人ってどーいう事?
そんな奴おらんだろ? >>814
Developer Editionならいるんじゃね Win10Proで2017Developer使ってるよ ExpressやDeveloperとかの無償版がなきゃ泣く泣くStandard買う奴もいるんだろうけど個人ユースならExpressで充分って言う人がほとんどだろうしなぁ 中小でも社内で完結させられるならExpressで十分だしな。同時接続の人数によるが。
サイズオーバーしてもDB分ければいいし。 企業でexpressはほぼほぼライセンス違反とちゃうんか?
知らんけど expressは商用おkやぞ
ダメなのはDeveloper クライアントOSでやるとそっちのライセンスに引っかかるけどな >>821, >>823
アホすぎ、100年ROMっとけ >>823
おまえのせいでアホにアホって言われてもうたわ
どう責任とってくれんねん >>827
未だにダブルクォートとかの囲み文字付きファイルや改行入りが処理できない駄目ツール
(SSISではできるのに)
パフォーマンスはそこそこ。
あなたの評価は? SQL Server PowerShellってどうなの? >>828
SSISも勝手にやられてしまう仕様が多くて使いづらいけどな。 セッションの確認の事で教えてください。
物理的に別々の2つのサーバにそれぞれSQL Sever 2005が入っています。
それぞれの現在のセッション数を調べたく、以下のSQL文を実行するアプリを作りました。
select hostname, count(*) from master..sysprocesses where hostname != '' group by hostname
一方のSQL Serverはうまくセッションを取得できたのですが、もう一方の方は自分のアプリ分のセッションしか見えてきません。
SQL Serverの方の設定とか関係してるのでしょうか?他の方法でもいいのですが、うまくセッションの状態を調べる方法があれば教えてください。
ちなみに接続文字列は以下でアクセスしています。
Data Source=xx;Initial Catalog=DvtReport;Persist Security Info=True;User ID=xx;Password=xx;Pooling=false; >>832
ありがとうございました。見えました。
アホな質問ですみませんでした。 一般的に接続の作成、開放はコストが高いと言うけど、この場合のコストって何?
クライアントから見た時間は当然として、サーバー側はどんなコストがかかるの?やっぱりその間の処理が重くなるとかあるのかな? コスト=負荷と思っとけ
接続口を作るのはOSとやり取りするからけっこう大変な処理 >>834
サーバはリソース(CPUとメモリ)
クライアントは時間 >>836 >>837
例えば常時だいたい100くらいセッションがプールされてるとして、新たに100のクライアントが増える場合、サーバーにとって100プールが増えるのと増加100分は毎回接続、開放してもらうのと、どっちがいいかな? そもそもサーバは接続プールとかしてるのかね
プールしてるならなおさら、クライアントは毎回解放してもらわんとプールが有効に使えないわけだが そもそもサーバは接続プールとかしてるのかね
プールしてるならなおさら、クライアントは毎回解放してもらわんとプールが有効に使えないわけだが >>838
プールはクライアント側の実装だからサーバにとっては単に長時間の接続でしかない
サーバが許容する上限を超えるまではプールしたほうが良いことが多いが、
限界をこえるようなら毎回接続開放するしかない
クライアントの数が多いとか、接続毎のクエリ発行頻度が低い場合は
プールせずにこまめに切断したほうが良いこともある SSMS の軽量版、簡易版を出してほしい。
DB管理者向け機能を省略し、一般ユーザ向けのバージョン。 え?SSMSって一般ユーザがSQL投げて問合せするツールじゃないの? テーブル間にリレーション定義してあって着目セルがリンク対象だったとき
右クリとかでリンク先の該当テーブル表示、みたいなところまでやってもらいたいところだ リレーションシップなんて飾りです 偉い人にはそれがわからんのですよ SQL分からんようなやつに直接触らせるDBはねーよ ssmsの悪い所は
オブジェクトエクスプローラがテーブルやプロシージャ含めて全てツリー表示している所だな
増えてくるとスクロールが大変。
それからテーブルやビューを見るとき次々タブが増えてどれ修正していたのかわからなくなる
SIオブジェクトプラザという有料のツールだとそこら変うまく出来てる
データベースをまたぐ依存関係もわかる
だけど高いのと時々固まるのでおすすめできない >>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
毎回、レベルの低いところでマウント取ろうとするから、周りと会話が噛み合わなくなることに早く気づきなよ RDBMSだからファイルコピーが出来ねえとかガイジか
稼働中はファイルが閉じられとらんのだから出来るわけねえだろアホウが >>952
お前はファイル共有モードについて勉強してから出直せ
レベル低すぎる リレーショナルデーターベースって
所定の構造のデーターの集合を保持していて、所定の方法で、データーが保存、変更、削除、参照ができるもので良い?
例えば、所定の構造のデータを保持する、Excel bookと保存、変更、削除、参照の手順書とか データベースそのものには変更方法等の規定はないし
その特定の構造がリレーショナル形式でなければ「リレーショナル」データベースとは呼べんな 考えたこともなかったけど、SQL Serverのデータファイルでファイル共有モードとかできるの?
あと思ったけどReadOnlyにしたらコピーできるんかね、やってみるか >>953
おめーはファイルバッファについて勉強しろハゲ
ただでさえDBはログキャッシュ持ってるんだ
書き出されてないデータなんぞごまんとあるわハゲ >955
Excel表でその様なリレーショナルな構造を作れば、要件を満たしているのですね? >>957
コピーできない話はもういいのか? w
バッファーとかキャッシュの話はまた別の話な >>959
で? 不完全なファイルコピーできてそれが何だってんだ?
ちったあ頭使えハゲ 元はなんだっけ?
SSMS使わずにファイルコピーでバックアップしたい→稼動中は無理
って話だっけ? >>960
そんなもんはとっくに書かれてる → >>904
周回遅れすぎだろ w >>961
そう → >>898
>>912 がバカ晒してグダグダになってるだけ >>964
まあSQLiteみたいなインプロセスな奴だとデータベース管理システムって言うのはちょっと違和感あるかな RDBMSが備えるべき最低限の機能はって話を決めんとな
コンピュータ上で何らかのプログラム使ってリレーショナルなデータ扱ったとき
そのプログラムは全部RDBMSだろって話になるから
まあ、スレ違いだな
別スレ立ててやってくれ スレ違いではあるんだが、2年たっても消化できないスレが勢い上位の版でスレたててもなあ Windows Server 2012上で動いているsql serverのテーブルを同じ
Windows Server 2012上で動いているMySQLのテーブルに毎日一回
コピーしたいんですが、一般的なやり方を教えて下さい。
sql serverで何かそう言うジョブを設定するなど可能でしょか? >>969
例えばどんなアプリ?
>>970
どんなジョブを書けば良いの? おまいさんのレベルがわからんからまず自分で考えた方法を書こうぜ 泥臭いがSQLServerからレコード取ってきてMySQLにインサートするアプリってこと
独自列使ってないならダンプでもいけるかもしれん SQLServerでファイルに吐き出してMySQLで取り込む
昔から使われてて少なくとも一般的なのは確実
同じサーバ上にたててるくらいだからデータ量なんてたかが知れてるだろうし、レコードで処理するよりファイルでやればすぐ終わって差分とか気にする必要もないだろう MySQL用のプロバイダあるね
これでいけるんじゃないの >>971
アプリと言うか
MySQLへリンクサーバー設定して
drop table MySQLTable
select ... into MySQLTable …
みたいなSQLを発行するコード書いてタスクスケジューラとかで定期的に起動すればいいかと >>977
試してみます。
皆さんありがとうございました。 プロシージャの引数で型のサイズを省略したいのですが、何かいい方法はありませんでしょうか?
テーブルの列のサイズとプロシージャの引数のサイズの同期を取るのが煩雑で…
Oracleみたいなテーブルの型を参照出来れば一番いいんですけどね。 >>980
Trunsaction-SQLはかなり古い言語使用なので無理に何かするようになるなら、普通にパラメータとして受けとった方がいい。
TYPEデータベースオブジェクトを作成して、それデータ型をプロシージャに渡せばできるかも知れないが、私はやったことがないので、わからない。 >>980
昔関わってたシステムは列名ごとにユーザー定義データ型を作ってた
ユーザー定義データ型を作る手間はかかるが、コード書くときに列名だけしっとけば桁長意識しなくていい(桁間違いのバグ防ぐため)から >>981
>>982
ありがとうございます
やっぱり、そういう仕組みは存在しないんですね
全部の引数のサイズに最大の文字数を指定しちゃうのはどうなんでしょうか? >>983
文字型ならmaxで良いが、小数点ありの数値型だと最大って何?ってなるな >>985
numericで桁数省略すると小数以下が0になるけどいいの? 省略したら規定の桁数になるだけで、そんなことを言ったらvarcharだって省略可能だぜ >>986
え?そうなんですか!
それはまずいです…
どうしよ… >>984
文字列型のmaxはLOB型になってしまうのでまったくおすすめできない。 >>989
LOB型なんてsqlserver には無いんだけど・・ >>992
LOB=Large OBject
ラージオブジェクト データ型でぐぐりなされ 貼ろうとしたらエラーくらったのよ
前もあったけどシステム的な単語いれると弾かれる
てかぐぐったらJDBCとかが上にヒットするなすまん
データ型のところ見てたら出てくるよ
ただ、ストアドの引数に使って何のデメリットがあるのかは知らん、LOB型がないってあったから書いただけ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 812日 4時間 28分 2秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。