・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/
https://msdn.microsoft.com/ja-jp/library/ms187752(v=sql.120).aspx
intやcharと同列で語るもんじゃないのはわかってるよ
なにを指摘したいのかわからん。前スレでも書いたがストアドの引数に使うことのデメリットは知らんぞ
普通のテーブルの列で使ったら1ページ8KBの話に関わるから必要な場合を除き乱用すべきじゃないのは言えるが
お前さんが「LOB型」とかいう俺様用語を使うから
みんなOracleのCLOB型/BLOB型の話かと思って話が混乱した
(「LOB型」でググったらOracleばかりだ)
最初から「ラージオブジェクト データ型」と書いていたら
混乱は避けられたかもな
ああ、最初にLOB型を言い出した前スレ989は俺じゃない(993や995が俺)んだけど、あれへの突っ込みって分かってて突っ込んでる的なやつだったのか
すまんすまん、LOBがなんのことか分からずに素でLOB型ってなにと聞いてるもんかとばかり思った
つかIDないと不便だ、スレ建て時のワッチョイの付け方はわかるんだけどな
>>5
知ってるということを書いたつもりだったんだけどな
そこのMSDNの内容見てそれが読み取れないほど日本語能力に不自由はしてないぞw
それ型じゃないよ
ちょっと上に
> SQL Server では一部のデータ型は、格納の特性に基づいて次のグループに分けられます。
ってあるようにグループの名前みたいなもんだから
戻らないと言うかたいていのDBMSはDDLの前後でコミットするから
SQL Serverにもそういうコマンドがありますか?
一旦DROPして再作成すれば?
特定IPのみ接続可とかやるくらいなら素直にVPNにしとけ
なぜかあなたのようなことを言ってしまう方が大勢いますが、明確な理由を説明できないでしょう?
Webアプリの認証突破されてもまだDBまで到達されない方法はあるが
直でログインされたらもう終わりだ
それ単にWebアプリケーションサーバが挟まる構成を取る意味がわかっていないひとの理屈だよ。
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秒あたりの平均待ち時間が倍増←たぶんここの原因が問題
考えられること、他にみるべきところあったら教えてほしい
どう推論するか悩み中です
OSを再起動したかの、SQL Serverを再起動したのか、どちらなのか?
それでロック街増えるかはわからんが
アドホッククエリが多すぎるのかキャッシュが1日保たないのでそれはないです
と、書いて気付いたけどプランが変わったとかは考えにくいな
ほぼ毎日コンパイルされるのは前と変わらんし・・・まじでハード絡みなのか、異常があったら通知されるはずなんだけどな、、
WindowsUpdateとかウィルス対策ソフトとかあやしい
サービスの確認はしてないですが、日中は全然負荷かかってないのでリソース喰ってるとかはたぶんないです
メモリはSQLServerに固定で80%分与えてるんで空き10数パーしかないですが(とはいえ10GB前後くらいは空きあり)
>>63
OS再起動です。再起動した部隊に聞いたらOSのパッチ当てたとのこと(OSはWin2012)
そっちの確認が先だった、なに当てたか確認します。
データベースにSQL serverを使用している
業務アプリケーションソフトがあります。
本部のWindows10のパソコンにSQL server を
インストールし、スタンドアロンでアプリを
動*のですが、このパソコンで作成した
データをエクスポートし、支社のパソコンに
インポートして使用します。
支社のパソコンにもSQL serverがインストール
されており、スタンドアロンでアプリを動*
ことが出来ます。
この場合、各パソコンにインストールする
SQL serverは全て無償版で問題ないのでしょうか?
それとも、正規版が必要でしょうか?
正規版が必要な場合、CALは必要でしょうか?
各パソコンはネットワーク接続されていますが、
SQL serverの使用形態は各パソコン個別で、
他のパソコンのデータベースを参照するような
ことはありません。
よろしくお願い致します。
最新版なら無償版で問題ない
ファイルサイズ10Gの制限だけ気をつけろ
ありがとうございました
原則ダメじゃなかった?
プリンタとかの接続は許可されてるけど
例外的にOK
IISもそう
データベースサーバーはダメ
IIS経由のデータベースとかは知らん
ファイルサーバにしたってCAL不要のWindowsStorageServerじゃスペックきついし
サーバ毎に必要なわけじゃないしユーザ分なりデバイス分なり買うもんじゃないのかな
お前は何の話をしてる?
すまん
Windows Server CALの話に乗っかったつもりだったがクライアントOSの話だったね
・Windows 7、8、10 OSにインスコの場合、接続数は20まで
・Windows Server OSにインスコの場合、接続数はCALに依存
らしいぞ。
sql server express 接続数 windows10 ググれ
ありがとう
from テープ゛ル
where 日時>getdate()
みたいな感じに getdate() を使ったとき、
1行ごとに(その瞬間の)getdate() と日時が評価されるのか
SQLが走り始める瞬間のgetdate()を得て、その単一の値を使って評価されるのか、どっちでしょうか?
後者は保証されてないはずだから前者じゃね
それは動作不明、意図が曖昧だからやらない。あらかじめ日時を取得してから条件値として用いるのが普通。
同じ結果が返り続ける関数を延々と使うのは開発者としてありえない。時間がすぎて変わることを想定しているのかどうかもSQLから読み取れない。
10万行でやったら違うのかもw
こんなSQLを書くやつはプログラマではない。
読み取り一貫性ってどういう意味で使ってるんだ?
その理屈だとたとえばRAND関数で評価してもすべて同じ数値で評価されるのか?
RAND関数そのものが常に同じ値を返す関数だとわかってる?
ベテランプログラマのなかにもループの中で今日の年月日を取得し続けるやつがいるからなあ。
しかもそれ日次バッチ処理w
全部ひとつのテーブルにまとめてしまえばよいw
リレーショナルデータベース完全否定やん
皮肉だから
ビュー作っても同じだよねきっと
ただのインデックス付きビューではたいして変わらないだろう。
SQL Serverはマテリアライズドビューが最新版でもないのかな?
そのときの最新の一貫性のとれたデータが必要でないなら、更新がかからない時間にでもコピーを作っておけばよい。
または目的のSQLを更新がかからない時間に実行して結果を取得しておく。
また、SQLServer認証も設定済みです。
@@servernameで取得した名前が db1
VPSのアドレスが1.1.1.1
開放したportが1433
だとして、自宅のPCのSSMSからVPS上のdb1に接続するには、サーバー名にはどのような記入をすれば良いのでしょうか?
デフォルトインスタンス(MSSQLSERVER)なら
VPSの外向けグローバルIPだけでOK
VPS側のファイヤーウォールで自宅側ルータのIPに絞っとかないと
アタック受けるから注意しろ
無事、接続出来ました。セキュリティの件もアドバイスありがとうございます。
どちらかがあればもう片方は無くても特に困らないですかね?
求める結果が同じあればまだいいが、2つはまったくの別物。
書き換え可能回数も随分と伸びたと聞くので、そろそろ大丈夫なのかなぁと。
HDD も併用するんなら、トランザクションだけ HDD に逃がしたほうがいいですかね?
SSDの寿命って突然*るのか?
なんにしてもデータ保護考えたら単一ディスクはあり得んし
なぜ目的を書かないのか?
目的は高速化しかないと思いますが・・・
投資の優先順位は
メモリー>ストレージ>CPU だと思ってます。
メモリーマンタンなので、次はストレージをと
てっきりメモリかと思っていた
あんたIT技術者か?
96GB まで積み増したのですが、最近はストレージへのアクセスが増えてしまったので。
メモリ上のバッファキャッシュが多ければ、ストレージのIOデータ量も増える。
データ量が大きくなって遅くなっていることをハードウェアでどうにかしようとするのは根本的な解決になっていない。
素人な自分としてはこれは本気で知りたい。
まえに環境の検討をやってたときに、 tempdb を SSD 上に置いたことはあった。
結構かなり速かったよ。本番環境でやっていいかどうかは知らないけど。
まずは無駄な検索とか更新をしてないかとか
インデックスがちゃんと効いてるかの確認
あとは物理的に複数のデバイスに分割してI/O処理を分散する
そのとき各デバイスで片寄らないように配置するキーを上手く選ぶとか
ああなるほど。
ひとつのストレージの上でなんと*ることしか考えてなかったよ。
参考にします。ありがとう。
最初のSQL Serverをインストールし、DB・テーブルの作成、レコードの挿入・更新・削除までやってみました。
次にプログラムからSQL Sv.を操作してみようと思い、C#からレコードやテーブルの操作をしてみました。
ここで気づいたのですが、実運用においてプログラムからDBを操作するケースって、基本的にはレコードの操作くらいでしょうか?
というのも、DB・テーブルの作成はシステムを構築する際には技術者がSSMSなどで行いうと思いますが、
プログラムがやることってシステムが稼働する段階になって、
ユーザーの操作に従ってレコードの挿入・更新・削除くらいかなと思いましたので。
DB技術者の先輩方、よろしくお願いいたします m(__)m
一時テーブルを作るとか普通にあるけど?
てか、一番多いのは検索だと思うぞ
一時的テーブルってどんなケースでしょうか?
自分がイメージしてるのは↓みたいな感じですが、実際こんな感じでしょうか?
例えば商品を扱う時に
◆登録時
商品(+カテゴリ)のレコードを追加、
もしくは既存レコードの数量を更新
◆検索
SELECT ~ WHERE で商品検索。
表示されたものを並べ替える時に、上記SELECT分に ORDER BY ~ を追加。
Windows7+SQL server 2008R2EXPRESSの環境で動かして
いましたが、今回、Windows10+SQL server 2016EXPRESSに
移行したところ、途端にアプリの動きが重くなりました。
いろいろ調べた結果、移行時に、SQL server 2016に2008R2の
データベース完全バックアップを復元した際に互換性レベルを
「2016」にしたことが原因で、これを「2008」に下げるとサクサク
動くようになりました。
そこで質問ですが、SQL server 2016EXPRESSに復元したDBの
互換性レベルを「2008」で動かしても特にリスクはないでしょうか?
そもそも互換性レベルは「2016」で動*方が望ましいのでしょうか?
よろしくお願い致します
調べたから見たはずだけど、2016を2008互換で動かしていたら、ただの問題の先送り。
>>144
ありがとうございます
さらにテストをしたら、互換性レベル2014までは正常に動きますが、
2016になった途端、動きが極端に重くなることが分かりました
問題の先送りにしかならないにしても、暫定措置としては、
なるべく互換性レベルは高い方がいいでしょうか?
それとも、2016でなければ、2008でも2014でもさほど変わりませんか?
本当に互換性に問題のある使い方をしているのかどうかを調べるのが基本だよ。
便所の落書きに判断を求めるなよ
正攻法なら最新に合わせて改修するだけだし
コストがかけられないなら確実に動作する状態でリプレースを待つだけだろ
暫定的にはいいけど、そのままだと次のバージョンアップの時に苦労するぞ
サーバ:Windows server 2008R2→Windows server 2016
SQL server:SQL server 2008R2→SQL server 2017
クライアント:Windows7→Windows10
互換性レベルをSQL server 2017にしたところ、やはり動きが
極端に重く(遅く)なり、互換性レベルをSQL server 2014に
下げると正常なスピードになりました
データベースがSQL server 2014までは互換性レベルなんて
意識したことなかったけど、SQL server 2016以降において
急に引っかかるようになった感じですね
だから製品の何が変わったのかマイクロソフトの情報を見ているのか?
リプレース時の互換性レベルの変更は危険。
チューニング済みの SQLほど実行計画ボロボロになる。
可能性は低いだろうけど接続に時間がかかるようになったとかメモリー足りなくてスラッシング起きてるとか
データベースそのものも考えてくれよw
DBの機能が遅い以外何があるってんだよハゲ
データベースは外部からSQLが発行されなくても、ただ動いているだけでもメモリ上のデータを定期的にファイルに書き込む。余裕があればファイルからデータを読み込む。
いっぱいあるがとにかくデータを失わない、データの整合性がとれなくならないようにする処理等があるんだよ。
で?
それはDBの機能じゃねえのか?
大体そんなバックグラウンド処理なんて四六時中走ってねーよこじつけんな
走ってますよ。
普通にバックアップとるだけだろ
↓みたいなイメージで合ってます?w
設計時:忙しい。責任重大。
開発中:DBのインストールやテーブルの作成が済めば、トラブルなければ特にやることない。
※開発中はC系のエンジニアなどがPG内にSQL文を書いてあれこれやるのをイメージしてます。
運用時:トラブルなければ特にやることない。
よろしくお願いいたします。
インフラ寄りなのか、アプリ寄りなのかでまったく違う。
ただ本来はどちらにも深く関わるのがまっとうなデータベースエンジニア。
そういう区別もあるんすね。ありがとうございます。
ちと調べてみまふ。
最後の最後で死にそうな顔して調整しまくってる DB エンジニアさんて結構ありがちと言うか。。。
開発の上流から下流までチェックし続けないと、クソみたいなDB設計とクソSQLのてんこ盛りで、データ量が多いシステムだと*。
処理は毎日やってますか?
毎日やるのはバックアップだけですか?
完全バックアップ以外は週一でいいんじゃないの?
もちろん、DBのサイズや用途にもよるけど。たしか、ウィザードはそんな(週一)がデフォルトだったと思う。
うちは完全バックアップを毎日とっている。
これは手持ちのクライアントPCにできないのかな?SSMSみたいに。
インストーラ立ち上げると「SQLServer データベース」が必須になっているよ。
SSISはSQL Serverが必要というよりは、Visual Studioが必要なんだよ。
Visual Studioは入ってるのか?
SQL Serverは伝統的にサーバーソフトウェア、クライアントソフトウェアを作り分けていない。
サーバのリソース食うのは避けたいので、クライアントでパッケージ作成したかったの。
慌ててVS2019のCommunityインストールしてSSDT入れたら
要求されたメタファイル操作はサポートされていません。 (0x800707D3)
(涙)
補完もするし複数列にCASTだのISNULLだのつけるとき
マルチカーソルが便利すぎる
SQL発行の結果が帰ってくるのはManagement Studio
のが速いけどVSCodeのが起動速いし
実行計画見るときぐらいしかSSMS使わんくなった
拡張はなになに入れてる?
2個の弥生会計からSQL serverをつつく作りになってるんだけど、
こういう場合て、ネットワークて同一セグメントで使うもの?
弥生会計の取説だと「同一セグメントで」て書いてあるんだが、ためにしもう一台をVPN接続越しで接続してみたり
SQL serverをAWSに置いてみたら激重になったんだが、DBてそういう使い方しないもの?
今時の回線事情考えたら
DBの問題じゃなくアプリの設計の問題の可能性のが高い
実際にできるできないはあなたの会社のセキュリティポリシーによるけど、
vpnで直接連携なんて怖くてやらない
同一セグメントでないとダメかといえばそんな事はない
しかし、FW、L3SWの設定はもちろん必須