Microsoft SQL Server 総合スレ 12
Microsoft SQL Server (Transact-SQL) の総合スレッドです。
・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/ 前スレの993だけど、ここにラージオブジェクト データ型はでてくる
https://msdn.microsoft.com/ja-jp/library/ms187752(v=sql.120).aspx
intやcharと同列で語るもんじゃないのはわかってるよ
なにを指摘したいのかわからん。前スレでも書いたがストアドの引数に使うことのデメリットは知らんぞ
普通のテーブルの列で使ったら1ページ8KBの話に関わるから必要な場合を除き乱用すべきじゃないのは言えるが >>3
お前さんが「LOB型」とかいう俺様用語を使うから
みんなOracleのCLOB型/BLOB型の話かと思って話が混乱した
(「LOB型」でググったらOracleばかりだ)
最初から「ラージオブジェクト データ型」と書いていたら
混乱は避けられたかもな >>3
それ型じゃないよ
ちょっと上に
> SQL Server では一部のデータ型は、格納の特性に基づいて次のグループに分けられます。
ってあるようにグループの名前みたいなもんだから >>4
ああ、最初にLOB型を言い出した前スレ989は俺じゃない(993や995が俺)んだけど、あれへの突っ込みって分かってて突っ込んでる的なやつだったのか
すまんすまん、LOBがなんのことか分からずに素でLOB型ってなにと聞いてるもんかとばかり思った
つかIDないと不便だ、スレ建て時のワッチョイの付け方はわかるんだけどな
>>5
知ってるということを書いたつもりだったんだけどな
そこのMSDNの内容見てそれが読み取れないほど日本語能力に不自由はしてないぞw 何を言いたいのかよくわからんけどスレを跨いでまで引きずるほど悔しかったことはわかった 俺から言いたいことは別にないよ
LOB型云々はいい出した989にいってくれ やたら遅い処理があると思ってトレース見てたんだけど、リンクサーバー経由で前方一致like検索されると、データ全件取得するSQLが流れてるように見える。
なんだこりゃ?
バージョンは2016のsp1 ユーザー定義テーブル関数の中で
SET @p = SELECT A FROM B
みたいな感じで、テーブルの中のデータを変数にぶち込みたいんですが、エラーになってしまいます。
どうやればいいでしょうか? selectが複数レコード返してもエラーにならない罠 プーリング接続についてお尋ねします。
ファイアウォールで一定時間アクセスのないTCP接続を切るようにしている環境下で、プールされていたsqlserverのセッションが切られて、次回接続時にエラーになることってあるんですか?
つまり、自分のセッションがプールされているはずなので無条件に使いにいく動作をしているのであって、あれば使いなければ新たに作るわけではないという事でしょうか? SSMSのクエリウインドウはどんなに長い文字列貼り付けても折り返されないみたいですが
10億文字ぐらいの文字列でもやはり折り返されずに1行で表示されるのでしょうか? ROLLBACK TRANSACTION
をやっても元に戻せない場合ってありますか? シーケンスとか戻らんはず
SQL SERVERで暗黙的にコミットするのなんかあったっけ シーケンスとか戻らんはず
SQL SERVERで暗黙的にコミットするのなんかあったっけ >>22
戻らないと言うかたいていのDBMSはDDLの前後でコミットするから DDL?ロールバックで戻るよ?DROP とかTRANCATEとか。 当たり前だがBEGIN TRANしてないと戻らんぞ
Oracle長かったから
SQL ServerはBEGIN TRANしておけばDROP TABLEもTRUNCATEも取り戻せてびびった DB破損させる可能性はOracleの方が高い
バックアップ取得失敗してると死ぬ Accessはインデックスが壊れてしまった場合、[データベースの最適化/修復]を行うと治りますが
SQL Serverにもそういうコマンドがありますか? indexの断片化とか気にしたことなかった
やばいかな? ★★★貧富格差解消の為には、累進税の税率を国民投票で決めるべきである★★★●
http://jbbs.livedoor.jp/stud●y/3729/storage/1069408696.ht●ml#47
この掲示板(万有サロン)に優秀な書き●込みをして、総額148万円の賞金をゲットしよう!(*^^)v
http://jbbs.livedoor.jp/stud●y/3729/ →リンクが不良なら、検索窓に入れる! 断片化もそうだけど統計情報はちゃんとやらんと泣く
インデックスヒント入れてればまあごまかせるけど、フルスキャンしいのNestedLoopしいので時間かかるわCPUぶんまわるわとひどい目に遭う SSL通してインターネット経由で使うのはありですか? VPNではなく、SQL ServerのSSL使ってポート固定でFW に穴開けて、という想定です SQL Slammerなんてのが流行ったことあったらから
FWで接続元絞れるんならまあ セキュリティがSQLServer自身の認証頼りになるからおススメしない
特定IPのみ接続可とかやるくらいなら素直にVPNにしとけ >>41
なぜかあなたのようなことを言ってしまう方が大勢いますが、明確な理由を説明できないでしょう? 明確な理由も何もフロントの認証より危険なのはちょっと考えればわかるだろ
Webアプリの認証突破されてもまだDBまで到達されない方法はあるが
直でログインされたらもう終わりだ >>43
それ単にWebアプリケーションサーバが挟まる構成を取る意味がわかっていないひとの理屈だよ。 >セキュリティがSQLServer自身の認証頼りになるからおススメしない
個人的にはこの意見に同意するんだが
実際それでどれほどの危険があるかだろ
ありなしの基準をはっきりさせんと何とも言えんわな
SQL Azureのセキュリティってこれしかないんじゃね Azureはサブネットで隔離すりゃ行けるんじゃないの知らんけど だいたい管理者ユーザーを使わせるわけでもないのに騒ぎすぎなんだよな。 SQLの認証にセキュリティホールがあるかどうか、って話だよな そういや3回失敗したら垢ロックみたいなのはないのかね
あっても解除どうすんのとは思うが 普通のSQL Serverなら、パスワードポリシーでロックアウト出来んじゃね
Azureはどうだかしらんが 結局のところ守りたいとこまでの壁を1つにしますか2つ以上にしますか、ってとこじゃないの?
詳しくないから見当違いかもだけど AWSだとサブネットで制限できると思った
Azureは知らん サーバー再起動したら、夜に2時間で終わってた処理が4時間ちょいかかるようになった
dm_exec_query_statsみてもこれだというのが特定できなかったんで、とりあえず統計情報更新とインデックス再構築かけたけどかわらん
パフォーマンスカウンタとってたんで比較すると
・CPU使用率は2時間ave80%だったのが4時間ave80%に
・ディスクIOはPhysical diskのキューも読み書きバイト数も1秒あたりの数値が半減、IO Latch waitも1秒あたりの待ち時間が半減
・メモリはmax、minで割り当てを固定(物理RAMの8割)、Buffer Managerのデータキャッシュをグラフでみると、2時間の挙動がまんま4時間に引き延ばしたかたちに変わった
・ロック待ちのカウンタみると1秒あたりの平均待ち時間が倍増←たぶんここの原因が問題
考えられること、他にみるべきところあったら教えてほしい
どう推論するか悩み中です リコンパイル指定掛けないと統計反映されないとかいう話なかったっけ
それでロック街増えるかはわからんが >>60
アドホッククエリが多すぎるのかキャッシュが1日保たないのでそれはないです
と、書いて気付いたけどプランが変わったとかは考えにくいな
ほぼ毎日コンパイルされるのは前と変わらんし・・・まじでハード絡みなのか、異常があったら通知されるはずなんだけどな、、 手動で止めてたサービスが再起動で動いてリソース食ってるとか
WindowsUpdateとかウィルス対策ソフトとかあやしい >>58
OSを再起動したかの、SQL Serverを再起動したのか、どちらなのか? >>62
サービスの確認はしてないですが、日中は全然負荷かかってないのでリソース喰ってるとかはたぶんないです
メモリはSQLServerに固定で80%分与えてるんで空き10数パーしかないですが(とはいえ10GB前後くらいは空きあり)
>>63
OS再起動です。再起動した部隊に聞いたらOSのパッチ当てたとのこと(OSはWin2012)
そっちの確認が先だった、なに当てたか確認します。 年明けののIntelCPU脆弱性のやつだったらめちゃ遅くなるぞ SQL serverのライセンスに関する質問です。
データベースにSQL serverを使用している
業務アプリケーションソフトがあります。
本部のWindows10のパソコンにSQL server を
インストールし、スタンドアロンでアプリを
動かすのですが、このパソコンで作成した
データをエクスポートし、支社のパソコンに
インポートして使用します。
支社のパソコンにもSQL serverがインストール
されており、スタンドアロンでアプリを動かす
ことが出来ます。
この場合、各パソコンにインストールする
SQL serverは全て無償版で問題ないのでしょうか?
それとも、正規版が必要でしょうか?
正規版が必要な場合、CALは必要でしょうか?
各パソコンはネットワーク接続されていますが、
SQL serverの使用形態は各パソコン個別で、
他のパソコンのデータベースを参照するような
ことはありません。
よろしくお願い致します。 >>66
最新版なら無償版で問題ない
ファイルサイズ10Gの制限だけ気をつけろ どうでもいいけど、無償版の対義語が正規版ってお前... 無償版てExpress Editionよね、それなら商用利用可能だしだいじょぶ
他のEditionならライセンス必要(Developerは商用利用不可) sever osじゃないosでの、他ノードからのアクセスもokだっけ? それはダメ
なおMySQLやPostgreSQLでもダメな模様 それはどっちかっていうとOSのライセンスの問題だからな
この質問はスタンドアロンでやってるからセーフだろう >>74
原則ダメじゃなかった?
プリンタとかの接続は許可されてるけど >>75
例外的にOK
IISもそう
データベースサーバーはダメ
IIS経由のデータベースとかは知らん 考えてみたら、mdbファイルとかSQLiteとかをIIS経由で使うのはOKてことになるのかな
なんだかな でも小規模な会社でもなけりゃだいたいのところは買ってるんじゃないの
ファイルサーバにしたってCAL不要のWindowsStorageServerじゃスペックきついし
サーバ毎に必要なわけじゃないしユーザ分なりデバイス分なり買うもんじゃないのかな >>79
すまん
Windows Server CALの話に乗っかったつもりだったがクライアントOSの話だったね 【悔日企業ヘイトバンク】 父は犬、兄は黒人、白戸は白洲、私たちはあのCMを見るたびに侮辱されていた
http://rosie.5ch.net/test/read.cgi/liveplus/1545098183/l50
I T 業 界 の B T S 問 題 浮 上 ! DECLARE @TABLE TABLE = TABLE01;
SELECT * FROM @TABLE;
みたいなことは出来ないです?
同じ構成のテーブルを条件で切り替えて使えないかなと。
sp_executesql を使って SQL を文字列で合成する方法は知っていますが、正直めんどくさい。。 ・SQL Server Express自体の接続数は無制限
・Windows 7、8、10 OSにインスコの場合、接続数は20まで
・Windows Server OSにインスコの場合、接続数はCALに依存
らしいぞ。
sql server express 接続数 windows10 ググれ システムエグゼ
苦情申し立てダイレクト窓口
代表取締役社長 酒井 博文
h-sakai@system-exe.co.jp
専務取締役 大場 康次
yohba@system-exe.co.jp
専務取締役 後藤 清孝
kgotou@system-exe.co.jp
取締役 藤林 隆司
rfujiba@system-exe.co.jp
rfujiba2@system-exe.co.jp
取締役 荻野 弘昭
h-ogino@system-exe.co.jp
取締役 新船 幸広
arafune@system-exe.co.jp
arafune_PJ@system-exe.co.jp
監査役 白銀 亨
sirokane@system-exe.co.jp LDHから新発売の「EXSUPPLI BLOCK」「EXSUPPLI PARTY」ゼビオ・ヴィクトリアの全店舗で11月29日(木)発売開始! select *
from テープ゛ル
where 日時>getdate()
みたいな感じに getdate() を使ったとき、
1行ごとに(その瞬間の)getdate() と日時が評価されるのか
SQLが走り始める瞬間のgetdate()を得て、その単一の値を使って評価されるのか、どっちでしょうか? >>87
後者は保証されてないはずだから前者じゃね >>87
それは動作不明、意図が曖昧だからやらない。あらかじめ日時を取得してから条件値として用いるのが普通。 >>87
同じ結果が返り続ける関数を延々と使うのは開発者としてありえない。時間がすぎて変わることを想定しているのかどうかもSQLから読み取れない。 何万行入ったテーブルに select *,getdate() from table やるとgetdate()の結果は全行同じだから後者と思われ 一応1300万行超のテーブルで確認したけどgetdate()の結果は全行同一でしたw getdateは非決定的関数のはずだが、実行計画次第で1回しか評価されてないのかも ただの読み取り一貫性を保つためだと思うけどな。SELECTをし始めた時点と条件の日時が異なったら、結果のデータをみたら一貫性があるのかどうかわからなくなる。
こんなSQLを書くやつはプログラマではない。 >>95
読み取り一貫性ってどういう意味で使ってるんだ?
その理屈だとたとえばRAND関数で評価してもすべて同じ数値で評価されるのか? >>96
RAND関数そのものが常に同じ値を返す関数だとわかってる? RANDは評価するたびに違う値を返す
select RAND(),RAND() とかやればあきらか
GETDATEも同じ値を返すとは限らない非決定的関数
ただ手元で試した範囲では、>>91のようなSQLだとComputeScalarの実行回数が1回になる
つまり、関数が1回しか評価されていないから、同じ値なのは当然
これは保障された動作じゃないはずだから、それらの関数が同じ値を使う保証はないと思うが
ないとは言えないはずだが、実際に複数回評価される状況があるかどうかわからんな
パーティション分割されたテーブルとかでパラで評価されるような状況だと違う結果にならないか誰か実験してみれくれ >>100
ベテランプログラマのなかにもループの中で今日の年月日を取得し続けるやつがいるからなあ。
しかもそれ日次バッチ処理w