Microsoft SQL Server 総合スレ 12
Microsoft SQL Server (Transact-SQL) の総合スレッドです。
・Microsoft 公式サイト
http://www.microsoft.com/japan/sql/ >>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 そりゃベテランにもアホはいるだろ
たいてい淘汰されるんだけどお前ん所が生き残れる環境だっただけ カラムストアインデックスの検証したけど、単一の表にアクセスするだけのSQLだと劇的な効果出たけど、複数の表を結合した複雑なクエリには無力だった。これって常識? >>103
全部ひとつのテーブルにまとめてしまえばよいw >>105
リレーショナルデータベース完全否定やん 実際縦集計速くするための仕組みだから
そういうテーブル設計が正解でしょ
必要な項目が全て存在する集計用データマート VPSにSQLServerをインストールして、外部接続可能な設定はしました。(パワーシェルでポート指定で疎通確認済み)
また、SQLServer認証も設定済みです。
@@servernameで取得した名前が db1
VPSのアドレスが1.1.1.1
開放したportが1433
だとして、自宅のPCのSSMSからVPS上のdb1に接続するには、サーバー名にはどのような記入をすれば良いのでしょうか? >>110
デフォルトインスタンス(MSSQLSERVER)なら
VPSの外向けグローバルIPだけでOK
VPS側のファイヤーウォールで自宅側ルータのIPに絞っとかないと
アタック受けるから注意しろ >>111
無事、接続出来ました。セキュリティの件もアドバイスありがとうございます。 >>113
ただのインデックス付きビューではたいして変わらないだろう。
SQL Serverはマテリアライズドビューが最新版でもないのかな?
そのときの最新の一貫性のとれたデータが必要でないなら、更新がかからない時間にでもコピーを作っておけばよい。
または目的のSQLを更新がかからない時間に実行して結果を取得しておく。 いったん対象範囲を#テーブルに切り出して、それにインデックス張って・・・ってのは時々やる ツイッターやネットでテクノロジー犯罪と検索して、まじでやばいことを四代目澄田会の幹部がやってる(アメリカではMKウルトラ計画)
被害者に対して暴力団以外にタゲそらしをしてるがやってるのは暴力団で普段外に出ることが少ないため遊びで公共の電波と同じような電波を使って殺人をしてる
統失はほとんどが作られた病気で実際は電波によって音声送信や思考盗聴ができることが最近明らかになりつつある
警察や病院では病気としてマニュアル化されてしまっているのが現状で被害者は泣き寝入りしてる
被害者がリアルタイムで多い現状を知って、被害者間でしか本当の事だと認知できていない
実際にできると思われていない事だから、ただの幻聴ではない実際に頭の中で会話ができる
できないことだと思われているからこそ真面目に被害を訴えてる
海外でも周知されつつあることを知ってほしい。
このままだとどんどん被害が広がる一方
#テクノロジー犯罪
#四代目澄田会
#拡散希望
[参考]
https://black.ap.teacup.com/yamisiougn01/6.html
https://tekunoroji-hanzaihigai.jimdo.com
https://blogs.yahoo.co.jp/patentcom
https://twitter.com/celesty_cs 👀
Rock54: Caution(BBR-MD5:f70dfdc711a7c6ae6accccb939f27fbf)
https://twitter.com/5chan_nel (5ch newer account) not exists句とexcept演算子ってほぼ同じものでしょうか?
どちらかがあればもう片方は無くても特に困らないですかね? >>118
求める結果が同じあればまだいいが、2つはまったくの別物。 「ユーザー定義データ型」ってのがあると思うんですが、
そいつを含んだものを C# 側から ExecuteReader() とかで SELECT 取得したとき
各列のユーザー定義データ型を調べる手段ないでしょうか。
CREATE TYPE [dbo].[JAN13] FROM [char](13) NOT NULL
みたいにして、この列を含んだ行を SELECT したとき
char[13] じゃなくて [dbo].[JAN13] という定義名を得たいのです。 同じバージョン間でバックアップ、復元を行っていますが
何故かバックアップを作成した時点ではなく少し前の状態で復元されてしまいます
フルバックアップしたものと聞いているので最新の状態で復元されるものと考えていますが
バックアップの取り方に問題があるのでしょうか?
ちなみに復元する側はDBを一旦削除してから復元しています 自己解決しました
復元の際にタイムラインでバックアップポイントを最新に指定していなかったことが原因でした
デフォルトで最新になるものだと思い込んでいました SQL Server で SSD 使ってる方おられますか?
書き換え可能回数も随分と伸びたと聞くので、そろそろ大丈夫なのかなぁと。
HDD も併用するんなら、トランザクションだけ HDD に逃がしたほうがいいですかね? >>123
SSDの寿命って突然死するのか?
なんにしてもデータ保護考えたら単一ディスクはあり得んし >>123 は単にSSDを使ってもよいのかどうかという質問なんだろうね。スマートフォンのストレージがHDDでないことに疑問を持たないのかね? スマートフォンはSSDだったのか?
てっきりメモリかと思っていた コンシューマー向けのTLC/QLCを使うなんてことがなければいいんじゃないかとは思うが
3DXpoint高いお… >>125
目的は高速化しかないと思いますが・・・
投資の優先順位は
メモリー>ストレージ>CPU だと思ってます。
メモリーマンタンなので、次はストレージをと データベース丸ごとキャッシュに乗るべきと思って
96GB まで積み増したのですが、最近はストレージへのアクセスが増えてしまったので。 >>133
メモリ上のバッファキャッシュが多ければ、ストレージのIOデータ量も増える。
データ量が大きくなって遅くなっていることをハードウェアでどうにかしようとするのは根本的な解決になっていない。 データ量が増えてメモリを食うようになった⇒ストレージへの I/O が増えた状態への有効な対処法ってどんなのがあるんだろう。
素人な自分としてはこれは本気で知りたい。
まえに環境の検討をやってたときに、 tempdb を SSD 上に置いたことはあった。
結構かなり速かったよ。本番環境でやっていいかどうかは知らないけど。 >>135
まずは無駄な検索とか更新をしてないかとか
インデックスがちゃんと効いてるかの確認
あとは物理的に複数のデバイスに分割してI/O処理を分散する
そのとき各デバイスで片寄らないように配置するキーを上手く選ぶとか データが増え続けても性能問題は起こらないという発想がおかしい。
性能問題が発生してSSDにするというのは、その場しのぎでしかない。 >>136
ああなるほど。
ひとつのストレージの上でなんとかすることしか考えてなかったよ。
参考にします。ありがとう。 DB初心者なんですが、質問させてください。
最初のSQL Serverをインストールし、DB・テーブルの作成、レコードの挿入・更新・削除までやってみました。
次にプログラムからSQL Sv.を操作してみようと思い、C#からレコードやテーブルの操作をしてみました。
ここで気づいたのですが、実運用においてプログラムからDBを操作するケースって、基本的にはレコードの操作くらいでしょうか?
というのも、DB・テーブルの作成はシステムを構築する際には技術者がSSMSなどで行いうと思いますが、
プログラムがやることってシステムが稼働する段階になって、
ユーザーの操作に従ってレコードの挿入・更新・削除くらいかなと思いましたので。
DB技術者の先輩方、よろしくお願いいたします m(__)m >>139
一時テーブルを作るとか普通にあるけど?
てか、一番多いのは検索だと思うぞ >>140
一時的テーブルってどんなケースでしょうか?
自分がイメージしてるのは↓みたいな感じですが、実際こんな感じでしょうか?
例えば商品を扱う時に
◆登録時
商品(+カテゴリ)のレコードを追加、
もしくは既存レコードの数量を更新
◆検索
SELECT 〜 WHERE で商品検索。
表示されたものを並べ替える時に、上記SELECT分に ORDER BY 〜 を追加。 SQL serverをデータベースに使用している業務用アプリを
Windows7+SQL server 2008R2EXPRESSの環境で動かして
いましたが、今回、Windows10+SQL server 2016EXPRESSに
移行したところ、途端にアプリの動きが重くなりました。
いろいろ調べた結果、移行時に、SQL server 2016に2008R2の
データベース完全バックアップを復元した際に互換性レベルを
「2016」にしたことが原因で、これを「2008」に下げるとサクサク
動くようになりました。
そこで質問ですが、SQL server 2016EXPRESSに復元したDBの
互換性レベルを「2008」で動かしても特にリスクはないでしょうか?
そもそも互換性レベルは「2016」で動かす方が望ましいのでしょうか?
よろしくお願い致します >>142
調べたから見たはずだけど、2016を2008互換で動かしていたら、ただの問題の先送り。 >>142
暫定的にはいいけど、そのままだと次のバージョンアップの時に苦労するぞ >>143
>>144
ありがとうございます
さらにテストをしたら、互換性レベル2014までは正常に動きますが、
2016になった途端、動きが極端に重くなることが分かりました
問題の先送りにしかならないにしても、暫定措置としては、
なるべく互換性レベルは高い方がいいでしょうか?
それとも、2016でなければ、2008でも2014でもさほど変わりませんか? >>145
本当に互換性に問題のある使い方をしているのかどうかを調べるのが基本だよ。 >>145
便所の落書きに判断を求めるなよ
正攻法なら最新に合わせて改修するだけだし
コストがかけられないなら確実に動作する状態でリプレースを待つだけだろ そもそもそれホントに互換性レベルの問題なのか?
2016出てだいぶ立つから、メジャーな問題ならもっと話題になってると思うが 実行プランに影響するから>>142の環境だけで発生するとかもあり得る その後、同じ業務用アプリケーションで、以下のような環境移行を行い、
サーバ: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以降において
急に引っかかるようになった感じですね >>150
だから製品の何が変わったのかマイクロソフトの情報を見ているのか? どこのSQLで遅くなってるかとかの確認もしてないんだろ? 例えばどんなSQLがどのくらい遅くなったのか、そのときの実行計画は同じなのかぐらいは調べてさらせよ 確か遅いSQL一発で出せるやり方あったよな
事前にフラグ立てなきゃいけなかった気もするが 言っておくが彼はSQLが遅くなったとは一度も書いていない。 そもそも何も書いてないから切り分けろって言われてるんだが… DBでSQL実行が遅くなる以外に何が遅くなるって言うんだ…? >>160
可能性は低いだろうけど接続に時間がかかるようになったとかメモリー足りなくてスラッシング起きてるとか まあまずはなにがどう遅いか調べんと話にならん
あとはリストアしてからなにしたかだな
ほんとに互換性レベルだけで遅くなるとは思いにくい >>164
DBの機能が遅い以外何があるってんだよハゲ >>165
データベースは外部からSQLが発行されなくても、ただ動いているだけでもメモリ上のデータを定期的にファイルに書き込む。余裕があればファイルからデータを読み込む。
いっぱいあるがとにかくデータを失わない、データの整合性がとれなくならないようにする処理等があるんだよ。 >>166
で?
それはDBの機能じゃねえのか?
大体そんなバックグラウンド処理なんて四六時中走ってねーよこじつけんな Express版でオンラインバックアップ取る技ってないの? DBエンジニアの業務ってどんな感じですか?
↓みたいなイメージで合ってます?w
設計時:忙しい。責任重大。
開発中:DBのインストールやテーブルの作成が済めば、トラブルなければ特にやることない。
※開発中はC系のエンジニアなどがPG内にSQL文を書いてあれこれやるのをイメージしてます。
運用時:トラブルなければ特にやることない。
よろしくお願いいたします。 >>171
インフラ寄りなのか、アプリ寄りなのかでまったく違う。
ただ本来はどちらにも深く関わるのがまっとうなデータベースエンジニア。 ソフトの応答時間って結構重要なのに後回しにされがちなのね。
最後の最後で死にそうな顔して調整しまくってる DB エンジニアさんて結構ありがちと言うか。。。 >>173
そういう区別もあるんすね。ありがとうございます。
ちと調べてみまふ。 >>174
開発の上流から下流までチェックし続けないと、クソみたいなDB設計とクソSQLのてんこ盛りで、データ量が多いシステムだと死ぬ。 メンテナンスプランによる、インデックス再構築、統計の更新、完全バックアップあたりの
処理は毎日やってますか?
毎日やるのはバックアップだけですか? SSIS使いたいんだけど、SSDTをインストールしないといけない。
これは手持ちのクライアントPCにできないのかな?SSMSみたいに。
インストーラ立ち上げると「SQLServer データベース」が必須になっているよ。