X



Microsoft SQL Server 総合スレ 12

0401NAME IS NULL
垢版 |
2020/09/05(土) 16:34:53.14ID:???
>>400
システムデータベースのバックアップは同じバージョンにしか書き戻せないでしょ?
新しいバージョンに直接書き戻すことできるの?
調べればどっかに出てるんだろうけど、単純だからインストーラのアップデートを使ってる
0402NAME IS NULL
垢版 |
2020/09/05(土) 20:13:10.43ID:???
>>401
システムデータベースって言葉の解釈が他と違う気がする
master,msdb,model等を指して話ししてる?
0403NAME IS NULL
垢版 |
2020/09/05(土) 23:46:16.40ID:???
>>402
> master,msdb,model等を指して話ししてる?
そうです。
他のPCに移すってことは、そう言うことでしょ?
その他に、レプリケーション用のDBも含むかな
0404NAME IS NULL
垢版 |
2020/09/05(土) 23:48:22.94ID:???
>>402
>>396が言われているのは、master,msdb,model等のことだと思ってレスしてましたよ
0405NAME IS NULL
垢版 |
2020/09/06(日) 11:44:41.42ID:???
>>403
>>404
じゃ俺が文脈読み間違えてるだけだね(´・ω・`)すみません
0406NAME IS NULL
垢版 |
2020/09/06(日) 21:36:15.51ID:???
システムデータベースバックアップなんて必要なの?
0407NAME IS NULL
垢版 |
2020/09/06(日) 22:53:53.53ID:???
バックアップ自体はめっちゃ必要でしょ
0408NAME IS NULL
垢版 |
2020/09/07(月) 02:36:47.59ID:???
とったバックアッップいつ使うの?
ユーザデータベースはわかるけど
システムデータベースをリストアするイメージが湧かない
0409NAME IS NULL
垢版 |
2020/09/07(月) 07:53:42.40ID:???
ハードウェア故障とか(震え)
0410NAME IS NULL
垢版 |
2020/09/07(月) 10:36:53.26ID:???
単体で動かしてるなら再インストールして必要な分再設定のほうが簡単だがな
0411NAME IS NULL
垢版 |
2020/09/07(月) 11:14:37.06ID:???
“必要な分”が漏れなくすべてミスなく再設定できてるかどうかどうやって確かめるの?
0412NAME IS NULL
垢版 |
2020/09/07(月) 16:11:23.92ID:???
大事なのは環境構築の作業ログはちゃんと残そうぜだっぺ
0413NAME IS NULL
垢版 |
2020/09/07(月) 18:06:08.83ID:???
>>408
>>392-393サーバーのリプレースでどうするって話がもと
うちはサーバを仮想化したから仮想環境を新しいサーバに移して、起動させるだけなんだけど
OSのアップデートとSQLServerのアップデートを実施したって話

>>412
作業ログって人の作業記録だとすると、理解できる人材が必要
手順だけを詳細に書いておいても、バージョンアップ等で手順が変わると役に立たなくなる
理解できて対応できる人が必要
仮想サーバの移行は単純だし、単純なOSやSQLServerのアップデートはウィザードに従うだけでできるから、これで良いかなと思ってるところ
0414NAME IS NULL
垢版 |
2020/09/07(月) 19:55:52.08ID:VUeEFudZ
SQL Serverのバックアップの基本は論理バックアップなのかと眺めているけど、本当にそうだとすると大量データには不向きなRDBMSだな。
0415NAME IS NULL
垢版 |
2020/09/07(月) 21:34:28.56ID:???
もしかして設定変更などguiで頑張ってるのか
0416NAME IS NULL
垢版 |
2020/09/07(月) 22:07:50.44ID:???
sqlserver を仮想化するって遅くなるだけでメリットが感じられないな。
テストの時スナップショットからすぐ戻せるとか
そんな事くらいしかメリットない。
サーバー移行も大きい仮想ドライブファイルコピーするのに休日返上で一気にやらないといけないとか大変そう。
バックアップなら完全バックアップ前日とってコピーして
おいて当日差分バックアップとってそれだけコピーすればいいから早くすむと思う
0417NAME IS NULL
垢版 |
2020/09/07(月) 22:42:49.93ID:???
仮想化知らんのかw
0418NAME IS NULL
垢版 |
2020/09/08(火) 12:25:02.82ID:???
>>413
それは移行計画とか手順書を作る前の検証段階レベルで起こる話だから問題ないでしょ?教育にもなる

ぶっつけ本番前提ならそれはそもそもとして体制に問題ありって事だよ
0419NAME IS NULL
垢版 |
2020/09/08(火) 14:39:08.95ID:HzvFsyRh
イメージを戻すだけで済むようなシステムならもともと苦労なんかしないだろうに。
0420NAME IS NULL
垢版 |
2020/09/13(日) 11:59:17.42ID:???
ちょっと困ってるので、詳しそうな人が多そうなここで質問

簡潔に言うとWindows10&WindowsServer2019+VS2019(ASP.NET,VB.NET)+SQLServer2019Expressでwindows認証接続してデバッグモードでプログラムは動作する。
それを発行してIISで参照するとDB接続に失敗する。
なんでだろう?
0421NAME IS NULL
垢版 |
2020/09/13(日) 12:27:14.55ID:???
エラーメッセージを見ろよw
0422NAME IS NULL
垢版 |
2020/09/13(日) 20:27:20.94ID:???
たぶんあのモジュールの設定がアレなんだと思うよ?
0423NAME IS NULL
垢版 |
2020/09/14(月) 01:00:26.63ID:ix9Okpm5
>>420
どうして失敗しているのがわかったのか?
ありのままを知らせてくれないとわからないよ。
0424NAME IS NULL
垢版 |
2020/09/14(月) 02:12:24.66ID:???
デバッグモードのときのあWebサーバは何なんだよ?
それはどのアカウントで動かしてるんだよ?

多分、IISのアカウントがWindows認証で認証できてないんだろ
今のIISのアプリケーションプールとか仮想アカウントで動いてるし
そのへんの仕組みちゃんと勉強する気がないならSQL Server認証でやっとけ
0425NAME IS NULL
垢版 |
2020/09/14(月) 02:39:06.98ID:ix9Okpm5
IISすらろくに理解してないのがわかる質問だから、相手にしなくていいと思う。
0426NAME IS NULL
垢版 |
2020/09/21(月) 16:11:02.91ID:gsw4bqcy
MacのARM化に伴って、Mac+Docker+SQLServerみたいな組み合わせはできなくなりそうなんだけどさ
SQLServerってARM Linuxへの対応は計画にないもんなの?
0427NAME IS NULL
垢版 |
2020/09/22(火) 16:11:00.11ID:???
ここで聞かれても
0428NAME IS NULL
垢版 |
2020/09/22(火) 17:03:29.93ID:???
ARM版WindowsのWOWを流用したら可能性はある
0429NAME IS NULL
垢版 |
2020/09/22(火) 19:04:35.11ID:jrCQ1y5r
macは需要のなさから、いろんなものが対応していない。
0430NAME IS NULL
垢版 |
2020/09/23(水) 08:29:01.06ID:???
シーケンスの現在値がなぜか10個ほど巻き戻っていたせいで重複した番号が使われてレコード追加しようとしたときに一意性エラーでシステムが落ちてた
同じシステムで使われる他のシーケンスオブジェクトは問題なかったのに1個だけなぜか巻き戻ってた
なんか似たようなことなったひといない?
教えてエロいひと
0431NAME IS NULL
垢版 |
2020/09/23(水) 15:13:36.74ID:jpxv++AE
SSMSから社外ドメインのサーバーのSSISに接続しようとすると、WINDOWS認証はできるのですが、SQL SERVER認証ができないためにログインできません。

これは仕様でしょうか?
0432NAME IS NULL
垢版 |
2020/09/23(水) 16:23:58.55ID:???
ポートが通ってないんだろ
0433NAME IS NULL
垢版 |
2020/09/24(木) 00:28:53.49ID:???
>>432
ありがとうございます。

SSMSのログイン画面でSSISに接続しようとすると、サーバー名を入れる前から、WINDOWS接続しか選べないのですが、これもポートですか?
データベースに接続する時には、WINDOWS接続とSQL SERVER接続が選べます。
0434NAME IS NULL
垢版 |
2020/09/24(木) 14:21:52.81ID:???
そもそもそのサーバーでSQL SERVER認証する設定になってるのか?
0435NAME IS NULL
垢版 |
2020/09/24(木) 19:22:22.67ID:???
>>434
混合モードになっていて、DB接続は普通にできます。
0436NAME IS NULL
垢版 |
2020/09/24(木) 20:54:34.93ID:???
仕様ってことでいいんじゃねぇの
知らんけど

DB接続できるならSSISDB使えば?
0437NAME IS NULL
垢版 |
2020/09/27(日) 21:52:54.46ID:???
Express版をいじってみてるんだけどさ
これ、データベースのホットバックアップをとった時って、バックアップ中に行われた更新はどうなっちゃうの?
自動的にリストアに必要なトランザクションログもバックアップに含まれたりするん?
0438NAME IS NULL
垢版 |
2020/09/27(日) 22:06:07.42ID:???
FULLバックアップならトランザクションログも含まれる
0439NAME IS NULL
垢版 |
2020/09/27(日) 23:02:38.40ID:???
ありがとう
さすが元々有料だったのものだけあるな
0440NAME IS NULL
垢版 |
2020/09/28(月) 01:27:27.69ID:???
いろいろいじってたらそうか、流石に無料版はトランザクションログのバックアップに制限があって、使いづらくしてあるわけか
0441NAME IS NULL
垢版 |
2020/09/28(月) 02:28:37.98ID:???
いやそんな制限ないだろ
バックアップまわりの制限って圧縮ぐらいじゃね

SQL Server触るの初めてなのか?まず復旧モデルってのを理解してるか?
0442NAME IS NULL
垢版 |
2020/09/28(月) 13:04:07.47ID:???
正直、復旧モデルがいまいち理解できてない
理解しようと公式のドキュメントをなぞってたんだけど、そもそもExpressだとSimpleってのしか選べなくて続けらんなかったぜ
0443NAME IS NULL
垢版 |
2020/09/28(月) 13:16:14.46ID:???
Simple(単純)ってのは、ログを保存、バックアップしない運用
Expressでも単純しか選べないってことはなかったと思うけどな
インストール後でも変えれるから試してみ
0444NAME IS NULL
垢版 |
2020/09/28(月) 16:00:50.71ID:???
せんきゅー!
デベロッパーに変えたら使えたぜ、これでドキュメントなぞりができるが・・・・使えるようになったときに本番で使う金はねえ
もし使うとしてもAzureの月700円のやつになっちゃいそう
0445NAME IS NULL
垢版 |
2020/09/29(火) 10:05:54.68ID:???
ExpressでSimpleしか選べなかったバージョンって何?
あとOSも何?
0446NAME IS NULL
垢版 |
2020/09/29(火) 13:59:55.80ID:???
ごめんなさい
リカバリーモデルを選択する画面を間違えていました
確かにExpressでも選択できました
0447NAME IS NULL
垢版 |
2020/10/15(木) 22:52:25.90ID:???
SQL Server2016インストール後、IPアドレス変更した場合
特にする事はないのですか?
0448NAME IS NULL
垢版 |
2020/10/24(土) 20:31:09.40ID:???
>>447
DBエンジンそのものは問題なく動くはず
0449NAME IS NULL
垢版 |
2020/11/02(月) 15:26:45.98ID:???
SQLサーバーインストールする時にデータベースエンジンにしかチェック入れていないのにクライアント接続ツールとかが自動的にインストールされる理由を教えてほしいです
0450NAME IS NULL
垢版 |
2020/11/02(月) 19:37:23.45ID:gbiAIS+S
いつものサーバー君ですか?
0452NAME IS NULL
垢版 |
2020/11/12(木) 23:39:34.81ID:???
スレを間違えてしまってこちらに誘導されてきました
SQL Server Developerエディションについて教えて下さい。
このエディションは開発用となっていますが、機能的にはスタンダードと同レベルで使えるのでしょうか?
また実稼働では使用不可とはおもいますが、ライセンス的にはどこでみわけてるのでしょうか?
使用していると定期的に確認メッセージが出たりするのでしょうか?
0453NAME IS NULL
垢版 |
2020/11/13(金) 17:00:45.94ID:???
機能的にはエンタープライズだったはず
ライセンスはたぶん確認とかないと思う
0454NAME IS NULL
垢版 |
2020/11/13(金) 19:00:35.80ID:???
テレメトリーで確認してます
0455NAME IS NULL
垢版 |
2020/11/14(土) 02:55:42.24ID:5WdagOao
>>452
商用ではない非運用ならいいというもの
エンタープライズという名前にしてしまうと、商用で使ってしまう可能性があるから、エディション名を分けたのだと思う。
0456NAME IS NULL
垢版 |
2020/11/16(月) 21:28:14.28ID:5VqfDNor
パッケージソフトをvpn環境でクラサバ運用し始めたのですがクライアントからだとメチャソフトの動作が遅いです。
見直すのはサーバーの性能?クライアントpcの性能?vpnの回線の速度?どこから見直したほうが良いでしょうか?
0457NAME IS NULL
垢版 |
2020/11/18(水) 08:54:02.70ID:???
SQL server2019を買って2017にダウングレードしようと考えてるんですが、やり方を調べると2017の媒体を自前で用意する必要があるのは分かったのですが2017のプロダクトキーも自前で準備するのでしょうか?

2017で持ってるプロダクトキーは他サーバーで稼働中のものしかなく、どちらもバンドル版です。
0458NAME IS NULL
垢版 |
2020/11/19(木) 15:32:39.73ID:???
バンドル版のライセンス関係はその販売元に聞けってのが原則
0459NAME IS NULL
垢版 |
2020/11/19(木) 15:58:34.37ID:???
「他サーバーで稼働中のライセンスを流用できませんか?」 ってバンドル版の販売元に聞くの?

アホか
0460NAME IS NULL
垢版 |
2020/11/20(金) 10:24:55.66ID:???
メディアとプロダクトキーを流用していいか聞くんだが?
ライセンスは2019買う前提だ
バンドル版じゃなければそれで行けるはずだが、バンドル版はいろんな条件が追加されてる可能性があるからな
0461NAME IS NULL
垢版 |
2020/11/20(金) 12:58:39.69ID:???
>>460
他のライセンスのプロダクトキーを流用していいわけないだろ
0462NAME IS NULL
垢版 |
2020/11/20(金) 23:54:47.82ID:???
ダウングレード権でそのプロダクト使う権利あればプロダクトキーも使って良いはずだが
0464NAME IS NULL
垢版 |
2020/11/30(月) 14:27:49.98ID:???
今さらなんだけどSQL Server Native Clientが推奨されていない事に気がつきました
MSOLEDBSQLへのプログラム書き換え結構面倒ですね(VB.NET)
(コネクション、コマンド、アダプター、データリーダーの名前が変わる)
SQL Server 2005から開発してて現状2017です

SQL Server Native Clientでは新機能サポートしないと書いてましたが
2017からのFORMATMESSAGE 関数は使えてます
CommandTextにT-SQL自分で書くやり方は影響しないのかな?
0465NAME IS NULL
垢版 |
2020/12/01(火) 05:14:39.15ID:???
>>464
接続文字列書き換えるだけじゃないのか
新旧の名前教えてくれ
0466NAME IS NULL
垢版 |
2020/12/01(火) 08:37:58.29ID:???
SQL Native Clientの場合
System.Data.SqlClient 名前空間
"Data Source=192.0.1.1;User ID=user;Password=pwd;Initial Catalog=db1" 接続文字列
Using a1 As New SqlConnection(ConnectionString)
,a2 As SqlCommand = a1.CreateCommand
,a3 As New SqlDataAdapter(a2)

MSOLEDBSQLの場合
System.Data.OleDb 名前空間
"Provider=MSOLEDBSQL;Data Source=192.0.1.1;User ID=user;Password=pwd;Initial Catalog=db1"
Using a1 As New OleDbConnection(ConnectionString)
,a2 As OleDbCommand = a1.CreateCommand
,a3 As New OleDbDataAdapter(a2)

SQLCLIENTとOLEDBではコネクション、コマンド、アダプター、データリーダーの名前が変わっています
置換すればいいだけなんだけど引数や戻り値にこれらがなってると少し面倒かも

OLEDBで接続文字列にSQLNCLIで使ってた人?ならMSOLEDBSQLに
変えるだけ済むけど
0467NAME IS NULL
垢版 |
2020/12/02(水) 09:50:03.46ID:???
それはADO.NETの初期からあるOLEDB汎用のドライバで、MSOLEDBSQL用ではないわけだが

System.Data.SqlClient から Microsoft.Data.SqlClient にしろってことらしいが
名前空間の変更ぐらいで基本的なクラス名なんかは変更されてないと思うが
細かい動作なんかは未検証だからしらん
0468NAME IS NULL
垢版 |
2020/12/02(水) 11:40:42.41ID:???
MSOLEDBSQL
ttps://docs.microsoft.com/ja-jp/sql/connect/oledb/download-oledb-driver-for-sql-server?view=sql-server-ver15
専用のドライバがあります

ttps://docs.microsoft.com/ja-jp/sql/connect/oledb/oledb-driver-for-sql-server?view=sql-server-ver15
ここではOLEDBでMSOLEDBSQLを推奨
Microsoft.Data.SqlClientには言及なし

Microsoft.Data.SqlClient
使ってみましたがクラスは変更なしでそのまま動きますね
Nugetで関係なさそうな物までいろいろひっついてくる
0469NAME IS NULL
垢版 |
2020/12/02(水) 18:20:54.26ID:???
純粋なOLEDBのドライバと、ADO.NETのライブラリと混ぜて話してしまってるな
0470NAME IS NULL
垢版 |
2020/12/03(木) 08:33:29.87ID:???
>>469
ありがとうございます
そもそも違いを意識してませんでした
OLEDBの最新がMSOLEDBSQL
ADO.NETの最新がMicrosoft.Data.SqlClient

現状System.Data.SqlClientで使用しているなら
Microsoft.Data.SqlClientにするのが無難かな
0471NAME IS NULL
垢版 |
2020/12/04(金) 19:30:39.77ID:???
Microsoft.Data.SqlClientで使えるようになった新機能って何があるんだろ
それが必要でなければSystem.Data.SqlClientのままで良いんじゃないか
0472NAME IS NULL
垢版 |
2020/12/07(月) 10:02:07.90ID:???
>>471
そうですね
テストだけで終わりにしときます
0473NAME IS NULL
垢版 |
2020/12/14(月) 16:31:07.70ID:???
GUIでユーザやデータベースのプロパティーを変えるには、Windows + SSMSが必須なのですか?
(Azure Data Studio、SQL Server Data ToolsなどではT-SQLになるのでしょうか?)
公式のドキュメントを見ながら学習しているのですが、どのような項目があるかすら身についていない段階からCUIを使うのは辛いです・・・・
0474NAME IS NULL
垢版 |
2020/12/15(火) 08:09:01.23ID:???
>>473
必須ではないけど勉強するならSSMSであれこれいじってみるのがいいと思うけど
自分は本番環境でもSSMS使いますが
ちっこいテーブルいじる時はアクセス2000
0475NAME IS NULL
垢版 |
2020/12/16(水) 01:48:16.57ID:???
>>474
アクセス2000が使えるSQLServerて古い奴じゃない?
リンクテーブルなら今でも使えるのかな

ADPが使えた時は重宝した
0476NAME IS NULL
垢版 |
2020/12/16(水) 08:28:20.52ID:???
>>475
SQL Server2019とaccess2016だとadp使えないですね
SQL Server2019とaccess2000ならadpル使えますよ(Windows10)

SSMS、テーブルとかストアドを縦にずらっと出てくるだけじゃなくて
業務ごとにグループ分けできると便利なんだけどな
0477NAME IS NULL
垢版 |
2020/12/16(水) 20:31:08.36ID:???
>>476
SQLServer2008とAccess2010の組み合わせが編集できる最後の組み合わせだよね
Accessの方が新しいバージョンでないとスキーマの編集はできなかった
Access2013からadp未対応になったからね
2008R2はどうだったかなAccess2010で対応してたかもしれない
Access2000が対応してたのはSQLServer7までだったかな
0478NAME IS NULL
垢版 |
2021/01/31(日) 00:52:41.31ID:???
OLEDB接続では接続させない
ODBC接続なら接続できる

なんてを設定できますか?
0479NAME IS NULL
垢版 |
2021/02/02(火) 00:19:09.01ID:YPcBm8xr
Oracle Master取得に向けた書籍が結構出ているようですが、SQLServerの資格向けの似たような本はないのですか?
資格自体は興味がないのですが、ある程度網羅的に知識をつけたいんです
0480NAME IS NULL
垢版 |
2021/02/05(金) 21:42:33.86ID:???
そもそもSQL-Serverの資格ってもうないんじゃなかったっけ?
0481NAME IS NULL
垢版 |
2021/02/06(土) 15:47:46.05ID:???
1月末でSQL Serverに特化したMS資格はなくなったから
資格向けの本は本屋にはないだろうね

資格本じゃなく普通の入門書は大きめの本屋に行けばそれなりにあるはず
しっかり学びたければ「Microsoft SQL Server 2012 Internals」がおすすめ
0483NAME IS NULL
垢版 |
2021/02/06(土) 19:00:00.81ID:???
SQL Serverでやってみよう、はよく使った
0485NAME IS NULL
垢版 |
2021/02/16(火) 17:08:42.18ID:???
SSMS v15.0.18369.0で2つ目のクエリウィンドウを掴んで1つ目の下とかにドッキングさせると落ちるんだけど自分のとこだけ?
ここ2、3日で急に発生した
なおOSはWindows 10 20H2 19042.804
0486NAME IS NULL
垢版 |
2021/03/16(火) 15:18:58.11ID:Bn/p8j1N
SSMSで質問です。
KeyであるIDが1から順に降られているテーブルで
ID='201'であるレコードを編集したい場合はどうすればいいのでしょうか?

上位200行に入らないレコードの編集方法を教えてください
0487NAME IS NULL
垢版 |
2021/03/16(火) 16:56:41.51ID:???
あれは簡易的機能だろう
自分はupdate文作って更新してる
0488NAME IS NULL
垢版 |
2021/03/16(火) 19:09:50.37ID:???
>>486
URLが何故か貼れないけど、検索したらすぐ出てくる
0489NAME IS NULL
垢版 |
2021/03/18(木) 03:59:09.61ID:???
主キーでの1件UPDATEやなんのキーもない一時テーブルへの1件INSERTがおそくなるのって何が考えられるかな
プロシージャがたまに遅いときがあるってんで動的管理ビューのdm_exec_query_statsとprocedure_statsとるようにしたんだけど、
遅いときは決まってINSERTやUPDATEが遅くなってる
logical_writesやlogical_reads、physical_readsの値は特に変わらない
プロシージャ内のSELECTは速度安定してる
waitsとかもとってみるしかないかな
0490NAME IS NULL
垢版 |
2021/03/18(木) 10:01:17.95ID:???
>>488
出来ました。
ありがとうございました。
0492489
垢版 |
2021/03/18(木) 14:20:31.16ID:???
>>491
ありがとうございます、page splitも見てみる
UPDATEしてるテーブルがインデックス14個もある...適正に作られてるんだろうか
それが原因とした場合、とりあえずはインデックスの断片化の解消、FILL Factorの値の見直しかな

splitは一時テーブルのINSERTも可能性あるのかな
#付きのテーブルで、プロシージャの最初にCreateしてるんだけど主キーもインデックスもなにもなくて
while内でループで一件ずつInsertしてるんだが、IF文で条件満たせばtruncateしてて、最高でも99件しか貯まらないようなテーブルなんだ
Updateの方でsplit多発してる場合、その影響を受けたりするものなのかな
0493NAME IS NULL
垢版 |
2021/03/18(木) 15:29:09.05ID:???
>>492
一時テーブルでもpage splitの可能性はあるが
キーのないHeapならpage splitは発生しない

複数ユーザーがそのストアドを実行してる環境で
page splitが頻発してるならinsertのパフォーマンスもその影響を受ける可能性はある
でも一時テーブルとUPDATEで使ってるテーブルのストレージが違えば影響ないんじゃないかな
少なくとも1ユーザーがそのストアドを実行してるだけなら影響は受けない

INSERTのほうは一時テーブルで使ってるtemp dbへのI/Oが遅くなる原因が
何かないかを考えたほうがいいかも
あとはmemory optimizedにしてみるとか
0494NAME IS NULL
垢版 |
2021/03/18(木) 17:57:27.50ID:???
通常のINSERTと遅いINSERTでどの程度の差があるのか?
レコード長は? 1ページに何件入る?
固定長か可変長か?
TRUNCATE直後のINSERTが遅い可能性は?
0495489
垢版 |
2021/03/18(木) 21:38:23.03ID:???
>>493
なるほど
自分が関わってないシステムなんでその辺の情報も入手しつつ調べてみる

>>494
レコード長は長くない
全17カラムでBIGINTが1個、INTが12こ、TINYINTが3個、固定長文字列のCHAR3が1個

INSERTどれくらい遅いかだけど、問題ないとされてる日は平均70〜90マイクロ秒
遅いとされてるときは平均200マイクロ秒〜で、悪いと700、2000超えのときも
この値はプロシージャ実行前後でdm_exec_query_stats抜いて
execution_countとtotal_worker_timeの差を取って平均だした(erapse_timeも似たようなもの)
プロシージャ1回実行で10万〜30万件くらい処理してて、一番ひどい平均2000マイクロ秒越えのときは約10万回で212秒になってた
TRUNCATE直後が遅いとかそこまでは調査できてないです
0496NAME IS NULL
垢版 |
2021/03/18(木) 22:40:07.73ID:???
MSSQLのtruncateの挙動とマッチしていない…のかも

・truncateすると、レコードにtruncateのマークがされるだけで
 ブロック中で生きてるレコードが無くてもブロックは開放されない
・空きブロックが無く、新たにブロックが必要になったときに、
 その時にtruncateのマークがされたレコードを調査して、
 ブロックが未使用だと判明したらそのブロックを再利用する
0497NAME IS NULL
垢版 |
2021/03/18(木) 22:57:09.33ID:???
んーそれだとtempdb周りをまず疑うかな

この辺に該当しないか調べてみては?
https://www.sqlskills.com/blogs/paul/the-accidental-dba-day-27-of-30-troubleshooting-tempdb-contention/
https://www.red-gate.com/simple-talk/sql/sql-development/heaps-in-sql-server-part-4-pfs-contention/

でもトランザクションログ周りの可能性とかもあるし
遅くなる時に一緒に発生してる何かをどうにかして掴まないと難しいね
0498NAME IS NULL
垢版 |
2021/03/18(木) 23:26:54.65ID:???
ディスクが死にかけてるとか、ネットワークが不安定とかの可能性は?
つか単にロックウェイトじゃないだろうな
トランザクションと分離レベルどうなってる?
0499NAME IS NULL
垢版 |
2021/03/19(金) 00:25:42.14ID:???
localのtemp tableみたいなのでロックウェイトはないんじゃないか?
0500489
垢版 |
2021/03/19(金) 00:25:58.90ID:???
>>496
プロシージャ内にはテーブル変数にINSERTしてる箇所もあって、ここはINSERT回数は半分くらいなんだけど特に遅くなってないんだ
テーブル変数のほうはTruncateしてないんだけどそこ...かなあ

>>497
今日OSとSQL Serverのパフォーマンスカウンタ取ろうって話になった
教えてくれたところも参考にしつつ調べてみる
遅くなるのが月1〜2回くらいだそうで、今月中にしかけて再発待ちかな

>>498
ハードは異常はないらしい
ロック周りは他になにも処理が動いてなくても遅いときがあるってんで調べてないがおさえてみる
0501NAME IS NULL
垢版 |
2021/03/19(金) 02:31:40.64ID:???
テスト環境では再現しない?

該当のストアドの単独実行か複数の並列実行で再現したら絞りやすい
再現しなければしないで本番環境特有の設定か他の処理の影響を受けてることが分かるので半歩前進
再現しない環境と本番環境で各種測定結果の比較もできる

月1~2回しか発生しないならそのタイミングで他に動いてた処理を把握できれば調査進みそう
0502489
垢版 |
2021/03/19(金) 13:11:32.42ID:???
>>501
テスト環境の再現テストは難しい
本番でも再発頻度が高くなくて、やるとするとその時の同じデータを持ってくる必要があるが、テストサーバにリソースがそんななく、テスト環境には持って来れない機密情報も含んでて、そこをどうにかするマンパワーも割けない
ストアドは構造上同時実行は不可

俺自身はそこの開発メンバでもなくて、物理的にというか地理的に本番どころかテスト環境にもアクセスできない立場なんで直接手動かすこともできないのです
0503NAME IS NULL
垢版 |
2021/03/20(土) 00:29:36.15ID:???
あとは早い時と遅い時の実行プランが同じか見るぐらいかなぁ
テータ大量更新した後で発生しやすいとかなら疑ってみてもいいかも
パラメタスニッフィングでググってみて
0504489
垢版 |
2021/03/21(日) 10:09:19.60ID:???
>>503
処理後にdm_exec_query_planも取ってて比較はしてみた
パターンが2つあって、最初のカーソル宣言のとこが違うんだが、InnerJoin(NestedLoop)してるテーブルの結合順番が違うのと、SQLに書かれてないカラムが出力項目にあるという違いがある(後者はなんでそうなるのかわからない)
ただ、早いときと遅いときでパターンが分かれてる感じでもないのでプランからは原因は分からなかった
0505NAME IS NULL
垢版 |
2021/03/21(日) 12:14:07.24ID:???
SQLは変わらないのにNested Loopの結合順が変わるなら
統計情報を元にした件数予測が逆転することがあるってことだよね

結合順は速度にほぼ影響ない場合もあれば大幅に影響する場合もあるので
それだけじゃなんとも言えないが実際どうなのか再現テストやる価値はありそう
0506NAME IS NULL
垢版 |
2021/04/22(木) 17:20:45.84ID:nSxF6+DB
sqlserver 2012 localdbなんですが、
SSMS等でデータを確認しても、明らかに存在しないのに
重複キーエラーでInsert出来ないデータがあります。

DBファイルを色々入れ替えて使用したため、
Indexファイルの整合性が崩れているのだと推測しますが、
どこを初期化すれば治るのでしょうか?

sp_updatestatsは試しましたがダメでした
0507NAME IS NULL
垢版 |
2021/04/22(木) 18:43:36.91ID:???
キーが重複してないのに重複キーエラーも聞いたことがなければ
indexの整合性が崩れるってのも聞いたこと無いなぁ
indexが不整合を起こしてる可能性を疑ってるならとりあえずdrop/createすればいいんじゃないの?

複数件insertしててエラーでトランザクションがロールバックしてるので
テーブルには該当データがないように見えるとか?
0508NAME IS NULL
垢版 |
2021/04/22(木) 21:42:23.00ID:???
Reporting Serviceって何処のスレで聞けば良いの?
初めてやるんだけど、帳票を出すためのツールって事くらいをようやくわかり書けてきたところ
0509NAME IS NULL
垢版 |
2021/04/23(金) 08:41:43.91ID:???
PowerBI使ってとけ。
今からssrsだと後悔するぞ
0510NAME IS NULL
垢版 |
2021/04/23(金) 13:36:29.46ID:???
>>506
とりあえず DBCC CHECKDB じゃね
localdbでできるのかどうか知らんけど
0512NAME IS NULL
垢版 |
2021/06/17(木) 12:50:08.04ID:bQpmAAKU
おまえら接続プロバイダは何使ってる?
おれは、MSDASQL
0513NAME IS NULL
垢版 |
2021/07/05(月) 12:25:38.17ID:???
With句使えますか?
使ってみたいので
0515NAME IS NULL
垢版 |
2021/07/10(土) 17:26:45.17ID:???
select into #tmpの方が使いやすいね
0516NAME IS NULL
垢版 |
2021/08/05(木) 22:36:51.55ID:btL3ovFW
ユーザーCALって、後からライセンス数増やすのは、追加分購入して認証するだけで増やせるの?
0517NAME IS NULL
垢版 |
2021/08/07(土) 01:05:53.66ID:???
>>516
製品版使うときはコアライセンスぐらいしか使ったことないよ
ユーザーCALってどのくらいの規模で使ってるの?
ファイルサーバのユーザーCALなら使ったことある
認証が無かった時期で自分で数字を入れるだけで、ごまかそうと思えば多めの数字を入れるだけだけだった
業務用でライセンス数をごまかすようなことはないから当時は厳格な管理はしてなかったね
0518NAME IS NULL
垢版 |
2021/08/22(日) 11:38:43.63ID:+WxTgcLC
https://kurashigoto.hokkaido.jp/flexibleSearch/search.php?offset=0&;limit=20&search=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://magazine.jp.square-enix.com/top/comics/?search=q&;x=0&y=0&sword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://miyagi.doctor-search.tv/search/hospital?dis=3000&;Keyword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://mtke-job.jp/list/keyword=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
https://news.dwango.jp/search/?s=%E3%83%98%E3%83%AB%E3%82%B9%E5%AC%A2%E3%83%BB%E5%A3%B2%E6%98%A5%E5%A9%A6%E3%81%AE%E9%87%91%E5%9F%8E%E8%8B%B1%E9%87%8C%E3%81%95%E3%82%93%EF%BC%881984%EF%BC%8F3%EF%BC%8F21%E7%94%9F%EF%BC%89%E3%81%AE%E8%87%AA%E6%92%AE%E3%82%8A%E3%83%8C%E3%83%BC%E3%83%89%E5%85%AC%E9%96%8B%E4%B8%ADavgle
0519NAME IS NULL
垢版 |
2021/08/31(火) 19:43:02.17ID:T0bkdi6G
テーブル名に半角スペースつけて作成したら
半角スペースなしでテーブル作ろうとしたわ重複してるって言われる。バグなの?
0521NAME IS NULL
垢版 |
2021/08/31(火) 23:34:39.11ID:???
末尾にスペースなんじゃね
0522NAME IS NULL
垢版 |
2021/09/01(水) 02:12:00.19ID:???
>>519
SSMSのGUIだと不具合があるとかないかな
SQL文なら問題無いことが多い
また、単純に、既にビューがあるとかという落ちもあったり
0524NAME IS NULL
垢版 |
2021/09/01(水) 23:43:12.04ID:N1bzhcTm
なんで半角スペースを使おうとしているのかがわからない。
0525NAME IS NULL
垢版 |
2021/09/02(木) 02:18:44.81ID:w7l5TODt
>>524
そこはそうしちゃっただけ
0526NAME IS NULL
垢版 |
2021/09/02(木) 08:09:01.61ID:???
間にスペースはまだわかるけど最後にスペースはさすがに理解できん
0527NAME IS NULL
垢版 |
2021/09/02(木) 08:35:15.22ID:???
規約でテーブル名の桁数決まってんだよ
0528NAME IS NULL
垢版 |
2021/09/02(木) 09:15:13.80ID:???
だとしても普通アンダースコアとかにしないか?
0529NAME IS NULL
垢版 |
2021/09/02(木) 09:37:12.56ID:???
すごい規約だな
COBOLっぽさがあるけど普通はDB側じゃなくプログラム側で対処するよな
0530NAME IS NULL
垢版 |
2021/09/02(木) 10:47:39.48ID:???
そんな規約があるような所はテーブル名もT0001234とかじゃねーの?
0531NAME IS NULL
垢版 |
2021/09/02(木) 18:14:09.97ID:???
日本語の処理オプションの設定
0532NAME IS NULL
垢版 |
2021/09/04(土) 04:20:49.33ID:sVLT48pB
クライアントソフトからsqlでビューの登録がタイムアウトしてしまう。何が原因かどうやりゃいいの?
0533NAME IS NULL
垢版 |
2021/09/04(土) 10:36:14.21ID:???
>>532
エラーメッセージで何がタイムアウトをしてるのかは確認できてる?
0534NAME IS NULL
垢版 |
2021/09/04(土) 12:52:19.62ID:sVLT48pB
>>533
以下で、何が原因かは特定できません。

「実行タイムアウトの期限が切れました。操作完了前にタイムアウト期間が過ぎたか、サーバーが応答していません。」
0535NAME IS NULL
垢版 |
2021/09/04(土) 14:28:46.27ID:???
>>534
Command Timeoutなので指定してなければデフォルト30秒なんだけど
開始してからタイムアウトが発生するまでの秒数と合ってる?

https://docs.microsoft.com/ja-jp/dotnet/api/system.data.sqlclient.sqlcommand.commandtimeout?view=dotnet-plat-ext-5.0

サーバー側の負荷状況や実際に処理が実行されてるかをActivity Monitorとかで確認すればいい
Indexed Viewとかじゃなくて単純なViewなら秒単位の時間がかかったりしないから
何か待たされてるんだろうけどぱっと思いつく原因はないな
0536NAME IS NULL
垢版 |
2021/09/04(土) 18:09:08.99ID:sVLT48pB
sql Server側で、クエリパフォーマンス分析や構造分析って
プロファイラー以外になにつかってます?
0537NAME IS NULL
垢版 |
2021/09/04(土) 20:30:42.16ID:???
構造分析ってなんかわからんけど
クエリのパフォーマンス分析はEXPLANが基本 (SET SHOWPLAN_ALL ON)
実際実行した結果はSET STATISTICS IO ONとSET STATISTICS TIME ONで確認

トレースとるのは正常に実行されないクエリに悪影響を及ぼしてるものが
他の方法では簡単に特定できないような場合に使う
性能に影響でるから運用中の本番環境で使うのは最終手段
0538NAME IS NULL
垢版 |
2021/09/05(日) 14:11:40.60ID:???
とりあえず流したSQLとどうやって実行したか曝せよ
ビューの登録ってのが何のことかわからんが、Create Viewがそうそうタイムアウトするとは思えん
0539NAME IS NULL
垢版 |
2021/09/09(木) 20:27:34.53ID:???
alter view ではtime outはよくある
使ってるviewをalterするとデットロックする
0540NAME IS NULL
垢版 |
2021/09/10(金) 01:03:31.08ID:JMgjI8OA
sqlの中の括弧の対応関係を色付けしてくれる機能ってssmsであります?
0541NAME IS NULL
垢版 |
2021/09/12(日) 08:06:05.73ID:???
>>539
deadlockとtimeoutはエラーメッセージが違う
0542NAME IS NULL
垢版 |
2021/09/13(月) 00:55:02.75ID:???
単なるタイムアウトをデッドロックとか言う人多いよね

まあSQL Serverはalter viewもトランザクション内でできたはずだから
デッドロックすることもなくはないんだろうけど
0543NAME IS NULL
垢版 |
2021/09/13(月) 08:13:14.58ID:8fCPiXxw
排他ロックとデッドロックを間違えるレベルはひどいなw
0544NAME IS NULL
垢版 |
2021/09/22(水) 02:05:41.92ID:iue4uJKZ
csvファイルでテーブルをキーが一致したらレコード洗い替えたい。バッチファイルとか実行すると作動するようにしたい。
可能ですか?
0545NAME IS NULL
垢版 |
2021/09/22(水) 12:58:41.05ID:???
Accessはもう諦めたのか?
そんなんじゃ何一つ出来ないぞ
0546NAME IS NULL
垢版 |
2021/09/22(水) 13:34:54.24ID:xdPa75UG
>>545
ん?
0548NAME IS NULL
垢版 |
2021/09/23(木) 12:16:42.00ID:bPVhBfA6
>>547
やり方おしえてよ
0550NAME IS NULL
垢版 |
2021/09/23(木) 20:35:31.15ID:bPVhBfA6
sqlcmdをサーバはインストールしてるけど
クライアントはしてない場合にも
実行できる方法ない?
0552NAME IS NULL
垢版 |
2021/09/23(木) 21:00:49.66ID:???
>>550
何らかの方法でサーバーにログインして実行すればいいんじゃね?
0553NAME IS NULL
垢版 |
2021/09/23(木) 21:10:39.70ID:???
インストールしたらよくね?
0554NAME IS NULL
垢版 |
2021/09/26(日) 10:51:50.76ID:???
>>550
SQLServerのドライバはOS標準で組み込まれてるんだから、バッチ処理で良いんならJSやVBSを使えば良いんじゃないの
PSよりはVBSの方が情報が多いように思うし、OFFICEが使えるならVBAでも良いんじゃないの
というかOFFICEが入ってるならMSクエリとかが使えるか

>>553
クライアント環境にはできるだけツール類はいれたくないだろ
0555NAME IS NULL
垢版 |
2021/09/26(日) 12:12:38.40ID:???
>>554
>クライアント環境にはできるだけツール類はいれたくないだろ

DBを直接操作する人間のクライアントにsqlcmdとかSSMSが入ってないほうが意味がわからないんだけど?
まさかエンドユーザーにやらせようとしてんの?
0556NAME IS NULL
垢版 |
2021/09/26(日) 14:12:03.66ID:5SVUANCV
>>555
そう
一般利用ユーザーにテーブル更新させる
別にそういうとこあるでしょ
0557NAME IS NULL
垢版 |
2021/09/26(日) 15:46:53.78ID:???
>>556
そういうのは普通アプリケーション経由で処理するから
エンドユーザーのクライアント環境でバッチを流したりはしない
入力データが不正だったり更新が競合したりしても
エンドユーザーレベルのリテラシーで対応できるようなものを作る

各ユーザー専用のテーブルのみ更新するような場合で
データが壊れても再作成すればいいような重要度の低いものなら
そういうやり方もありえるのかもしれないが
問い合わせが増えるだけだからまずやらない
0558NAME IS NULL
垢版 |
2021/09/26(日) 16:43:12.12ID:5SVUANCV
>>557
クライアント側のアプリケーションだと
レコード削除はできない制約あるパッケージとか多くない?
スクラッチならやるけど
0559NAME IS NULL
垢版 |
2021/09/27(月) 11:31:27.95ID:BOre3vig
クライアントアプリが制限されているから
BATでやりたいと……

なるほど!理解した!
0560NAME IS NULL
垢版 |
2021/09/27(月) 14:50:56.29ID:???
データの洗い替えをユーザーにやらせるのは聞いたことないな
マスタメンテで複数件一括更新することを洗い替えと呼んでるのかもしれないが
0561NAME IS NULL
垢版 |
2021/09/27(月) 17:18:19.08ID:???
マスタメンテ機能そのものが用意されてなさそう
0562NAME IS NULL
垢版 |
2021/09/28(火) 00:20:14.32ID:moPRyYxu
マスタじゃないよ、トランザクション
0563NAME IS NULL
垢版 |
2021/09/28(火) 07:33:03.07ID:???
闇が深すぎて救いようがないな
0564NAME IS NULL
垢版 |
2021/09/28(火) 10:02:47.41ID:???
トランザクションなら本来の意味での「洗い替え」っぽいけど
だとしたらユーザー入力のcsvファイル使って
ユーザー環境でバッチ実行させる意味がますますわからん

わかる人いたら解説してくれ
0565NAME IS NULL
垢版 |
2021/09/29(水) 17:04:04.45ID:???
こういう当たり前のアプリケーション設計知識って実務経験以外で手に入れるのは難しいのかもね
0566NAME IS NULL
垢版 |
2021/10/03(日) 07:29:19.61ID:???
>>564
話を聞いてて、うちの会社でも同じような例があった
本社のシステム部門がDBを管理していて、事業部のシステム部門がマスタを更新したいって例があった。
本社部門は、テーブルを直接操作する権限は与えたくないんだけど、更新作業を自分たちでやりたくない、インターフェースのアプリを作りたくない
というような流れ、本社部門がしっかり作りこめば良いだけなのにね
0567NAME IS NULL
垢版 |
2021/10/03(日) 09:51:16.00ID:???
システム部門がユーザーの場合は全然話が違うでしょ

やり方はいろいろ有るけど単純なのはファイル連携で定期スケジューリングしたバッチジョブ流すだけ
エラー時は入力データを用意した関係者にエラー内容を通知するようジョブを組んでおけば十分なので
ユーザーインターフェースを用意しなきゃいけないような話ではない

自分たちが管理してないDBを直接SQLで更新したいってのも論外だし
事業部のシステム部門があるような大企業でマスタの更新バッチすら作らないような本社システム部門はかなりヤバい
0568NAME IS NULL
垢版 |
2021/10/03(日) 12:27:53.85ID:???
てか、事業部がどんな大きさなのかわからんけどシステム部門を抱えてるレベルなら事業部のDB持ってないの?
コンプライアンスとかで本社のシステム部門が統括管理してるのかな?
それであっても簡単なメンテツールを事業部システム部門が作ればいいだけだと思うけど…
0569NAME IS NULL
垢版 |
2021/10/13(水) 21:58:34.60ID:???
updateなのに重複するキーを挿入できませんと怒られる
そんなこと有り得るのかな
0571NAME IS NULL
垢版 |
2021/10/14(木) 00:17:12.64ID:???
キー値を書き換えた
トリガーでなんかした

まあ他にもあるかもしれんが、ありえる
0572NAME IS NULL
垢版 |
2021/10/14(木) 00:19:10.66ID:???
>>567>>568
おっしゃる通りです
日立とかIBMのホスト系しか扱ったことがない方が多くて、人員も世代交代に失敗していて古いシステム構成のまま改悪が続いてる
事業部側も人員がいなくてシニア契約社員が主戦力になってるような会社なんです
若い有能な人は見切りをつけて転職していく
個々の担当者はそれなりなんだと思うけど、経営がちょっと抜けてる感じでどうしようもない
0573NAME IS NULL
垢版 |
2021/10/14(木) 07:04:25.37ID:???
>>570
ありえました
と同時に絶望しました
もう作った人に修正させてと思いました
0574NAME IS NULL
垢版 |
2021/11/10(水) 05:15:39.36ID:???
付加列インデックスって関数の引数に使ってくれる?
where句、select句どっちも使う、使わない、どっちかしか使わないとかわかる資料ってどっかにあるかな?
0575NAME IS NULL
垢版 |
2021/11/10(水) 16:34:28.00ID:???
SQL Serverは関数インデックスをサポートしてないから
付加列インデックスかどうかやkeyかnon-keyかに関係なく
関数の引数に使った場合はindex seekにはならないよ

computed columnでkeyならwhere句で使える
non-keyはwhere句では使えない
0576NAME IS NULL
垢版 |
2021/11/11(木) 16:52:52.42ID:???
>>575
やっぱそうだよね。
なんか遅いクエリの実行プラン確認したときに出てきた足りないindexの中の付加列にisnull関数噛ませてるカラムが出てたんでもしやと思ったんだけど。
バージョンは2017です
ありがとうございました
0577NAME IS NULL
垢版 |
2021/11/11(木) 18:26:27.79ID:???
ん?
isnullってことはwhere句で使ってるんじゃないの?
であれば付加列インデックスの使い方間違ってる

あとちゃんとインデックス作っても
isnull自体にパフォーマンスの問題あるから違う方法に変えたほうがいいかもしれない
0578NAME IS NULL
垢版 |
2021/11/11(木) 20:29:26.94ID:???
>>577
そう。where句で使っていてselect句にはないカラムです。
付加列インデックスの使い方の件はわかってたんだけど、実行プランの足りないインデックスにisnull関数に噛ませてるカラムが付加列に入ったインデックスが出てきたんで、あれ思い違いしてたんかな?と思って質問させていただきました。

違う方法についてはよくある触りにくい、他の方法はコストがかかるってやつです。
まぁ、インデックスの追加も方法の一つとして、他の案も含めて考えます。
0579NAME IS NULL
垢版 |
2021/11/11(木) 20:51:37.87ID:???
この一連のやり取りが理解できないのは俺だけか?

とりあえず、その他の条件が満たされるなら
関数の引数でも、付加列の目的である余計なキー参照はしなくて済むぞ
0580NAME IS NULL
垢版 |
2021/11/11(木) 21:31:46.51ID:???
>>579
分かりづらかったのならすまんね。
今回の質問は問題解決ではなく仕様確認になるのかな

とある遅いクエリ流したら実行プランの確認でこれが足りないよって言われたインデックスにwhere句のisnull関数の引数に使ってるカラムが付加列として出てきました。
関数の引数にインデックスのカラムは使えないと思ってたんだけど、付加列ならいけるの?ってことで質問しました。

とある遅いクエリの改善についてはどうでもいいです
0581NAME IS NULL
垢版 |
2021/11/11(木) 21:43:45.41ID:6iIlck1C
なぜやってみないのか?
0582NAME IS NULL
垢版 |
2021/11/11(木) 23:20:50.43ID:???
使えないとはどういうことを言ってるんだ?
インデックスはってもそのカラムが使えなくなることなんてないぞ

実行時にそのインデックス使うかどうかはわからんがな
そのパターンでインデックス使って早くなるのは大体はキー参照しなくて済むパターン
だから通常のインデックス列ではなくて付加列で良いというお薦めだろう
0583NAME IS NULL
垢版 |
2021/11/11(木) 23:40:31.54ID:???
さすがにそれは文脈でわかってやれやw
0584NAME IS NULL
垢版 |
2021/11/12(金) 00:03:37.35ID:???
>>582
日本語下手でごめんね。

例えば、
create table AAAA
(
colmun01 char(4) not null
,colmun02 char(4) not null
,seq int not null
,first_date varchar(8) null
,last_date varchar(8) null
,primary key
(
colmun01
,colmun02
,seq
)
)

ってテーブルがあって

select colmun01
from AAAA
where colmun02 = 'BBBB'
and '20210401' between isnull(first_date, '00000000') and isnull(last_date, '99999999')

ってクエリを実行して実際の実行プランを確認したら

CREATE INDEX CCCC
ON DDDD( colmun02)
include(first_date,last_date )

が足りないんじゃない?
って出ました。

付加列の中のカラムはisnull関数の引数なんだけどなんで?

ってなったんで最初の質問になりました。
(WEBだけだけど)調べても出てこなかったんで

first_date、last_date が date型じゃなくてvarchar型 なのは許して。元のテーブルがそうなんで
0585NAME IS NULL
垢版 |
2021/11/12(金) 00:37:13.12ID:???
サジェストされてるインデックス追加すれば付加列としての効果はあるね

でもそもそもBETWEENの左側に固定値をもってくる書き方って有りなのかなぁ
isnull不要にしてfirst_data, last_dateをキーとしてインデックスはっても
Index Seekにはならないような気がするんだけど実際どうなんだろ
0586NAME IS NULL
垢版 |
2021/11/12(金) 01:46:20.70ID:???
>>585
付加列の効果あるんですか。

>でもそもそもBETWEENの左側に固定値をも>ってくる書き方って有りなのかなぁ
なるでしょっ、て思い込んでたんで改めて
isnull不要にしてfirst_data, last_dateをキーとしてインデックスはってfirst_data, last_dateのbetweenのみで実行してみたら、最適化の段階で大なり小なりに展開されてindex seekになってますね。実行プラン見る限りは
0587NAME IS NULL
垢版 |
2021/11/12(金) 01:48:02.27ID:???
☓ isnull不要にしてfirst_data, last_dateをキーとしてインデックスはってfirst_data, last_dateのbetweenのみで実行してみたら

○ first_data, last_dateをキーとしてインデックスはってisnull不要にしたfirst_data, last_dateのbetweenのみで実行してみたら
0589NAME IS NULL
垢版 |
2021/11/12(金) 17:47:15.17ID:ud1MiESj
>>584
WHERE句の条件の書き方が異常
0590NAME IS NULL
垢版 |
2021/11/12(金) 17:48:55.65ID:ud1MiESj
>>585
もうあんたの書き込みはネタとしか思えないんだけど?
0591NAME IS NULL
垢版 |
2021/11/12(金) 18:25:15.51ID:wE0oiQg0
>>584
インデックスにこだわっている理由は?
0592NAME IS NULL
垢版 |
2021/11/12(金) 19:08:33.33ID:???
>>591
こだわっている理由というか、このクエリでなんでこの条件がパフォーマンス改善の候補として上がってきたのかの理由が知りたい。

自分の今持っている知識が間違っているのだろうけど、この付加列が入ってくる理由がわからないので


前にも書いたけど、元の処理のパフォーマンス改善自体はどうでもいい
0593NAME IS NULL
垢版 |
2021/11/12(金) 19:18:04.33ID:wE0oiQg0
isnull関数を使っているから、他人には何を知りたいのかわからない。
0594NAME IS NULL
垢版 |
2021/11/12(金) 19:42:04.72ID:???
インデックスに付加列しとけばインデックスの読み込みだけで済むからでしょう
付加列にないカラムを参照したらインデックス以外にテーブルも読み込みしないといけないから遅くなる
0595NAME IS NULL
垢版 |
2021/11/12(金) 19:54:35.42ID:wE0oiQg0
典型的なSQL Server脳だなw
0596NAME IS NULL
垢版 |
2021/11/12(金) 19:55:36.00ID:wE0oiQg0
インデックスそのものが大きければ意味がない。
0597NAME IS NULL
垢版 |
2021/11/12(金) 21:42:13.95ID:???
いつもの嫌なやつ召喚しちゃったね・・・
0598NAME IS NULL
垢版 |
2021/11/12(金) 22:17:40.73ID:wE0oiQg0
インデックススキャンにしなければいけない→テーブル全体のインデックスを作る→このインデックスはいらないのでは?
0600NAME IS NULL
垢版 |
2021/11/13(土) 19:09:19.46ID:???
付加列の話を出したものです。
一応簡易的にデータを作って確認してみたので結果を書きます。

環境:
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Express Edition (64-bit)
on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
実施内容:
互換性レベル:SQL Server2017 のデータベース上で
create table AAAA
(
colmun01 char(4) not null
,colmun02 char(4) not null
,seq int not null
,first_date varchar(8) null
,last_date varchar(8) null
,primary key clustered
(
colmun01
,colmun02
,seq
)
)
の形のテーブルをAAAA〜EEEEの5つ作成。同一のデータを100万件投入
各々
CREATE INDEX IX_XXXX ON BBBB(colmun02)
CREATE INDEX IX_XXXX ON CCCC(colmun02) include(first_date, last_date )
CREATE INDEX IX_XXXX ON DDDD(colmun02, first_date, last_date )
CREATE INDEX IX_XXXX ON EEEE(first_date, last_date )
のindexを作成

各テーブルに対しての
select colmun01
from <テーブル名>
where colmun02 = 'BBBB'
and '20210401' between isnull(first_date, '00000000') and isnull(last_date, '99999999')
を1クエリでまとめて実行し実際の実行プランを確認
0601NAME IS NULL
垢版 |
2021/11/13(土) 19:10:10.28ID:???
結果:
AAAA Clustered Index Scan となりクエリコスト30%
BBBB Clustered Index Scan となりクエリコスト31% ※作成したindexは効かず
CCCC IX_XXXX がindex Seek となりクエリコスト6%
DDDD IX_XXXX がindex Seek となりクエリコスト6%
DDDD IX_XXXX がindex Scan となりクエリコスト28%

となりました。
この結果からIndexのキー列、または付加列が関数の引数として使用されている場合もindexが効く場合があるようです

ちなみにBBBBテーブルの実行の際にヒント句でindexを強制した場合は
AAAA クエリコスト8%
BBBB クエリコスト81%
CCCC クエリコスト2%
DDDD クエリコスト2%
DDDD クエリコスト8%
となりました。
0602NAME IS NULL
垢版 |
2021/11/13(土) 19:29:49.86ID:???
>>575の通りの理解だったので、なぜこのように動くのかがわかりません。
何か知っている方や理解に誤りなどありましたら教えていただけると助かります
0603NAME IS NULL
垢版 |
2021/11/13(土) 21:36:11.89ID:???
>>601
演算のパーセント表示だけで比較されてもわからんがな
0604NAME IS NULL
垢版 |
2021/11/14(日) 02:47:16.70ID:???
>>603
では、他にどのような情報がアレバ良いのですか?
0605NAME IS NULL
垢版 |
2021/11/14(日) 21:36:16.11ID:???
クエリコストの大小を比較したいなら各クエリ全体のコスト
コスト1000の6%と、コスト10の30%なら後者のほうが効率がいいからね

SET SHOWPLAN_ALL ON;
SET STATISTICS PROFILE ON;
SET STATICTICS IO ON;

↑この3つでそれぞれ表示される値の意味をdocs見て把握しておくといいと思う
0606NAME IS NULL
垢版 |
2021/11/15(月) 00:21:06.02ID:???
>>605
ありがとうございます。
ただ今回自分が知りたいことはコストはあまり関係ないんですよね。

違う結果になったことを明示するための情報としてコストを出したつもりでしたが下記の知りたいことからすると不要な情報でした。
すみません。

知りたいことは実行したクエリ

select colmun01
from <テーブル名>
where colmun02 = 'BBBB'
and '20210401' between isnull(first_date, '00000000') and isnull(last_date, '99999999')

のfirst_date,last_dateはisnull関数の引数なのになぜ付加列、またはindexのキー列が利用されて、index seekのみで解決されているのか?
になります。※1

元々indexのキー列、付加列は関数の引数や計算が含まれるとwhere句で利用されない(と思っていた)ため、CCCCテーブル、DDDDテーブルの実行はindex seek後にクラスター化indexのキー参照が起こると思っていました。
これはヒント句でindexの利用を矯正したBBBBの実行と同じ動きです。

一応テストした結果として、※1については解決できる場合があり、そもそもの自分の知識が誤っていることがわかりました。

ので「indexのキー列、付加列が関数の引数や計算が含まれてもwhere句で利用される」のはどのような場合か、明確な基準があるのかなどがわかれば教えていただければとおもいます。

一部表現が適切でなく伝わりにくい部分があるかと思いますが汲み取っていただけると助かります。
0607NAME IS NULL
垢版 |
2021/11/15(月) 01:23:19.68ID:???
利用されないのはオプティマイザが利用しても効果がないと判断したからで、効果があると思えば利用する
それだけのこと
べつに引数や計算だろうと直接の比較だろうと同じなんだが
0608NAME IS NULL
垢版 |
2021/11/15(月) 02:06:34.07ID:???
>>606
column02だけでindex seekしてるのか
column02に加えてfirst_dateやlast_date含めてindex seekしてるのかseek predicatesで確認した?
0609NAME IS NULL
垢版 |
2021/11/15(月) 23:18:02.81ID:???
>>608
これでした。ありがとうございます。
index seekの中を確認したところ、column02のみがseekでisnull関数の引数になっているfirst_dateとlast_dateはwhereでの参照でした。

CCCCとDDDDのクエリからisnull関数を外したものの実行結果と比較していろいろ合点がいきました。

GUI上のindex seekの表示しか見ていない浅い確認でそれ以降の知識がなかったため、自力でここにたどり着くのは難しかったと思います。
あらためてありがとうございました。

ついでにで申し訳ないのですが、今まで実行プラン上でindex seek、またはindex scanになっていることを「indexが効いている」と表現していたのですが、これは一般的に間違っていますか?
質問の中で色々表現がおかしく、理解しづらい部分もあったと思いますので少しでも修正できればと思っております。
0610NAME IS NULL
垢版 |
2021/11/15(月) 23:40:19.19ID:???
>>607
今迄はあなたと同じように「オプティマイザの気分」で済ませてたのですが、今回は少し突き詰めたかったのです
0611NAME IS NULL
垢版 |
2021/11/16(火) 00:00:34.73ID:???
SQLserverのハードを買い替えようと検討してもるんだけどストレージをSSDしても大丈夫か聞きたい。
SSDは書き込みの回数制限があり、頻繁な書き込みのあるSQLserverには向かないと昔聞いた事あったんだけど今は大丈夫か教えて下さい。
0612NAME IS NULL
垢版 |
2021/11/17(水) 00:13:51.33ID:???
>>611
SQLserverに向かないってよりもアクセス頻度の問題のような気がするけど。
ssdって言ってもqlc,tlc,mlcのような種類もあるし。
ただ、前にベンダーに見積もりとった時に聞いたのは利用用途が中規模のwebサービスなら、5年位であればそんなに気にしなくて良いって言われた。(ここでのSSDの種類が何か、中規模がどの程度かは忘れた。参考にならずすまん)
ちなみにどんな利用用途なの?
社内用か、インターネットに公開してるサービスなのか(1日のアクセスはどの程度か)、それとも個人用か

個人用でもなければどこかのベンダーに話聞いちゃった方がいいかも
0613NAME IS NULL
垢版 |
2021/11/17(水) 18:17:30.15ID:???
>>612
アドバイスありがとう
用途は会社でデータウエアハウス的利用です。日次で基幹システムからデータ取得して蓄積するようなデータサーバです。
DELLの直販で買う予定でサーバ向けSAS接続のSSDだから大丈夫だと思う。
一応DELLに問い合わせしときました。
0614NAME IS NULL
垢版 |
2022/01/22(土) 16:40:07.61ID:ANkLRIq9
レプリケーションというのを初めて設定しているのですが
「スナップショットエージェントが起動していません」のMSGが
出てスナップショットが取れません。
これってSQL Server エージェントとは別物ですか?
SQL Server エージェントは起動しているのに…。
すみませんが、わかる方がいたら教えて下さい。
0615NAME IS NULL
垢版 |
2022/01/26(水) 17:15:02.37ID:IRw1UwiV
オブジェクト名'sysservers'が無効です。エラー208
これどういった調査をすれば良いのでしょうか?
0616NAME IS NULL
垢版 |
2022/01/26(水) 19:31:05.33ID:???
sys.servers じゃね?
0617NAME IS NULL
垢版 |
2022/01/27(木) 01:31:47.35ID:???
将来のバージョンで廃止予定とかになってるけど、バージョンいくつ使ってるんだろうな
0619NAME IS NULL
垢版 |
2022/01/27(木) 17:53:32.89ID:???
何をどうしたらそのエラーが出たのかと、エラーメッセージを正確にかけ
0620NAME IS NULL
垢版 |
2022/01/27(木) 18:24:31.13ID:???
サブスクリプションの新規ウィザードで
パブリケーションを選択して次へをクリックすると
先のメッセージと一緒に「パブリケーションの
情報が取得できません」のMSGが出て先に進めません。
SQL SERVER2008R2です。
2019の評価版で試すと問題なく設定できます。
0621NAME IS NULL
垢版 |
2022/01/27(木) 21:44:41.14ID:???
パブリケーション側のバージョンは?
0622NAME IS NULL
垢版 |
2022/01/27(木) 22:05:05.99ID:???
パブリケーション側のバージョンが2008なのかな?
SSMSのバージョンを2008をサポートしてる古いやつで試すといいんでない?
0623NAME IS NULL
垢版 |
2022/01/28(金) 05:39:07.73ID:???
>>622
パブリケーション側が2008です。
SSMSのバージョンについては
全く頭にありませんでした
試してみます
ありがとうございました
0624NAME IS NULL
垢版 |
2022/01/28(金) 08:10:53.42ID:98qoK9/E
>>622
サブスクリプション側のSSMSをver10に変えたら出来ました。
本当にありがとうございました。
0625NAME IS NULL
垢版 |
2022/03/16(水) 06:19:16.79ID:???
大したデータ量でもないのに「クエリの実行中にMemoryGrantを25秒間待機する必要がありました」との警告が出て処理が遅くなるんですが対処法はないでしょうか。
また値が1, (2 or 3), (4 or 5)でそれぞれ集計したいのですがどのようなSQLにすればいいのでしょうか
0626NAME IS NULL
垢版 |
2022/03/16(水) 16:26:28.69ID:???
>>625
>大したデータ量でもないのに「クエリの実行中にMemoryGrantを25秒間待機する必要がありました」との警告が出て処理が遅くなるんですが対処法はないでしょうか。
テーブルとインデックスの構成、クエリ内容、実行プランを確認して原因を突き止めてください
原因が分かったらテーブルやインデックスを変更したりクエリを変更して対処してください

>また値が1, (2 or 3), (4 or 5)でそれぞれ集計したいのですがどのようなSQLにすればいいのでしょうか
現在のテーブル構造と欲しい結果のイメージを提示してください
0627NAME IS NULL
垢版 |
2022/03/16(水) 17:12:02.73ID:???
>>625
> また値が1, (2 or 3), (4 or 5)でそれぞれ集計したいのですがどのようなSQLにすればいいのでしょうか
select
case when 値 = 1 then '1' when 値 = 2 or 値 = 3 then '2 or 3' when 値 = 4 or 値 = 5 then '4 or 5' end as 値,
sum(集計列) as 集計
from テーブル
group by
case when 値 = 1 then '1' when 値 = 2 or 値 = 3 then '2 or 3' when 値 = 4 or 値 = 5 then '4 or 5' end
0628NAME IS NULL
垢版 |
2022/03/19(土) 18:54:37.22ID:???
開発サーバにいれるSQLServerのエディションをDeveloperにするの問題ないでしょうか
利用目的はシステム改修の開発単体テストから総合テスト、受入テスト
あとは本番サーバで不具合でたときの検証目的で使用するのは数名〜Max20人くらい
バージョンアップの準備してて、経緯不明なんですが開発サーバが今Enterprise入ってて変えて問題ないなら変えたい
本番はEnterpriseです
0629NAME IS NULL
垢版 |
2022/03/20(日) 13:06:14.65ID:???
>>625
MemoryGrantで待機ってメモリが足りてない
・SQLServer以外のプロセスがメモリ食ってSQLServerのメモリが小さくなってる可能性
→SQLServerの最大メモリ最小メモリの設定、SQLServerのサービスアカウントにメモリのページロックの特権がついてるか
・メモリめっちゃ使うクエリが同タイミングで動いてる可能性
→パフォーマンスモニタのBufferManagerカウンターで急激な変動がないか確認、動的管理ビューでその時間帯に動いてたクエリででかいのを調べる
・そのクエリがめっちゃメモリ食う
→これは626

昔使うメモリの計算に不具合あった覚えあるけど、あれは2008か2012くらいのSPで解消されてたような
0630NAME IS NULL
垢版 |
2022/03/25(金) 16:26:14.25ID:???
Express版は10GBまでは使用できるようですが、
10GBを超えそうだという警告などは設定できるのでしょうか?
定期的に使用領域を確認していないと、ある日突然なにもできなくなってしまうのでしょうか?
0631NAME IS NULL
垢版 |
2022/03/26(土) 05:22:50.26ID:???
>>630
このページにあるクエリを実行するスクリプトを作成し、タスクスケジューラで定期実行してみてはどうでしょうか
クエリの結果をもとに、自分で決めたしきいち値超えたら警告メールを送るような処理も加えると監視をほぼ自動化できそうですね
0632NAME IS NULL
垢版 |
2022/03/26(土) 05:24:39.02ID:???
>>630
ページの情報が抜けてた。。。
「データベースのデータとログの領域情報を表示する」でググってみてください
0633NAME IS NULL
垢版 |
2022/03/27(日) 04:43:57.62ID:g/u0dazF
ディスク容量を常に気にしていない運用という点が突っ込みどころなんだろうな
0634NAME IS NULL
垢版 |
2022/03/27(日) 09:21:36.36ID:???
今どき10GBの容量を気にする運用って…
0635NAME IS NULL
垢版 |
2022/03/27(日) 12:27:12.36ID:???
>>631-632
ありがとうございます
クエリで問い合わせられるのなら、いろいろできそうです
0636NAME IS NULL
垢版 |
2022/03/27(日) 14:58:09.23ID:???
>>633
ディスク容量を常に気にしたところで役に立たないという点が突っ込みどころなんだろうなww
0637NAME IS NULL
垢版 |
2022/03/27(日) 21:51:16.43ID:g/u0dazF
>>636
どこにファイルが作られているのかを気にしてない時点でおかしんだけどな。
0638NAME IS NULL
垢版 |
2022/03/27(日) 22:22:31.32ID:???
> どこにファイルが作られているのかを気にしてない
どこからそんな妄想が?w
0639NAME IS NULL
垢版 |
2022/03/27(日) 22:26:31.76ID:???
>>637
知らんのなら大人しくしとけよw
お前のオツムのほうがよっぽどおかしいぞ
0640NAME IS NULL
垢版 |
2022/03/28(月) 20:26:23.25ID:???
今、自分1人で使ってるスタンドアロンのACCESS DBがクソ重くて激不安定なので
同じ事をSQL serverでやろうとしてるんだけど
1人でスタンドアロン使用の場合、Developer版を
「永遠に開発中」という設定にしとけばライセンス違反にならない?
0641NAME IS NULL
垢版 |
2022/03/28(月) 23:45:33.37ID:YrCsxNrI
>>640
Expressを使わずにDeveloperを使わないといけない理由は?
0642NAME IS NULL
垢版 |
2022/03/29(火) 01:49:02.52ID:???
ちんちんシュッ!シュッ!シュッ!
0644NAME IS NULL
垢版 |
2022/03/29(火) 08:14:33.09ID:???
>>641
別にexpressでもいいんだけど
単にdevelopは制限が全くないのでこっち使おっかな、程度の事です
0645NAME IS NULL
垢版 |
2022/03/29(火) 08:20:42.50ID:???
そんなやつがライセンス気にしてるのかw
0647NAME IS NULL
垢版 |
2022/03/29(火) 13:26:38.05ID:???
>>640
止めとけ
素直にMySQLかPostgreSQL使え
0648NAME IS NULL
垢版 |
2022/03/29(火) 23:39:12.46ID:BT3fAchA
>>647
そんな理由で別製品にするなんて素人が言うことだろw
0649NAME IS NULL
垢版 |
2022/03/30(水) 00:51:56.50ID:???
SSMSでストアドのテストドライバ生成機能ってありますか?
※Sqldeveloperみたいな感じの、っていう表現で伝わりますかね

あるいは皆さんの、ストアドの単体テストの楽な方法とかも何かtipsがあれば
0650NAME IS NULL
垢版 |
2022/03/30(水) 01:29:25.29ID:???
Visual StudioのSQL Server Data Tools(SSDT)
0651NAME IS NULL
垢版 |
2022/03/30(水) 02:36:50.14ID:Q0Wnmomb
>>649
そもそもTransact-SQLをわかってますか?
0652NAME IS NULL
垢版 |
2022/03/30(水) 09:01:40.57ID:???
いつものことながらID付きはとことん的外れだな
0653NAME IS NULL
垢版 |
2022/04/02(土) 00:32:00.52ID:???
接続文字列のData SourceとServerに違いはあるの?
どちらもサーバーのインスタンス名かIPアドレスとポートの指定だと思ってるけど
0654NAME IS NULL
垢版 |
2022/04/02(土) 03:40:35.60ID:???
SQLServerでServerといったら基本的にはSQLServerがインストールされているサーバーかサーバーとそのインスタンス名まで
DataSourceとなるとSQLServer以外のDBMSやフラットファイルも含まれる
0657NAME IS NULL
垢版 |
2022/04/05(火) 18:16:10.44ID:???
>>656
ごめん自己解決
間違ってF5押してたわ
0658NAME IS NULL
垢版 |
2022/04/06(水) 22:53:45.80ID:2Dm57SjU
F5キーでコミットとはおそろしい発想だな
0660NAME IS NULL
垢版 |
2022/05/19(木) 16:16:58.24ID:QTEsI/3c
教えて下さい。
ACCESS2019、SQL Server2012利用しています。

ACCESSからSQL ServerのテーブルへODBCでリンクテーブルを貼っている環境があるんですが、
特定の端末だけ、リンクテーブルを開くと、内容が突然すべて#DELETEになってしまう に現象に見舞われました。

https://pctips.jp/pc-soft/access-sqlserver-deleted
このサイトを始めとして、同様の現象を解説しているサイトには、SQL Server側でbigint型を使ってるせいとありましたが、
bigint型は使っていませんし、特定の端末のみこの現象が発生しています。
再起動やODBC設定の作り直し、リンクテーブルの貼り直しなどしても治りません。


更に不思議なことに、次の日になると治ってしまいます。
で、しばらくたつとまた同じ現象に見舞われます。
(ここ一週間で3回です)

私も長年SE・PGやっていますが、このような現象は初めてで、
途方にくれています。
最悪PC変えれば治りそうな感じではあるのですが・・

なにか情報をお持ちの方のお知恵を拝借したく・・・
何卒よろしくお願いいたします。
0661NAME IS NULL
垢版 |
2022/05/19(木) 17:06:40.47ID:???
bigintだけじゃなくて、bit型で値がNULLだったりしたらそんな感じになった気がする

まあ、クライアントがまったく同じバージョンでまったく同じデータを表示して起こるなら
ネットワーク系の問題の可能性が高そうだけど
それかODBC定義が違ってるとか
ウィルスチェック系のソフトが悪さしてるんじゃね
0663NAME IS NULL
垢版 |
2022/05/25(水) 01:02:51.71ID:q0WabceL
sql serverにアプリから接続しているクライアントPCって
利用状況モニターで確認できますが、過去の履歴ってどこから見れますか?
0664NAME IS NULL
垢版 |
2022/05/25(水) 11:21:36.57ID:???
>>663
利用状況モニターってたぶん動的管理ビューから情報とってるから、それの過去データ見たいならそれをとるように設定しないと
データコレクションがそれなんだろうが自作でクエリ組んでSQLAgentで動かすほうがカスタマイズしやすいと思う
あとは、どういう風にデータを見たいかだけど拡張イベントでログインログアウトとるとかも有りかな
0665NAME IS NULL
垢版 |
2022/05/25(水) 16:42:31.89ID:???
どういうログがいるのかわからんが、監査ログで良いんじゃないか
0666NAME IS NULL
垢版 |
2022/05/25(水) 23:54:39.54ID:???
監査ログって拡張イベントを監査用にまとめただけでしょ
簡単にやれるぶん融通がきかない
項目とフィルタの設定の自由度ほしいなら拡張イベント一択
0667NAME IS NULL
垢版 |
2022/11/15(火) 22:39:41.69ID:54ouQ1K1
sql sever 2019で、ファンクションを作成しています。
その処理の中で、番号を管理する列から最大値を取得して1を加えたものを新しい番号として同じテーブルにインサートしようとしています。
その処理の間に、他からこのファンクションを呼び出されて割り込まれることを防止するため、ファンクションが完了するまでテーブルロック(排他ロック)をかけたいのですが、どのような記述が必要でしょうか。

begin transaction
commit のような感じで関係するステートメントをかこえたらよいのですが。
0668NAME IS NULL
垢版 |
2022/11/15(火) 22:53:59.24ID:???
>>667
自作せずにSEQUENCEをNO CACHEで使えばいいよ
0669NAME IS NULL
垢版 |
2022/11/15(火) 23:38:08.24ID:uZbfP42z
>>668
早速のレスありがとうございます。

連番はSQL SEVERに自動で振ってもらおうと思います。
そして、INSERTとOUTPUT inserted.*を使って、
その新しい番号を得たいと思います。
0670NAME IS NULL
垢版 |
2022/11/15(火) 23:42:08.86ID:uZbfP42z
>>669
訂正します
INSERTにOUTPUT inserted.*を組み合わせて
0672NAME IS NULL
垢版 |
2022/11/17(木) 19:21:02.25ID:???
>>667
まず分離レベルってのを理解しような
0673NAME IS NULL
垢版 |
2022/11/17(木) 23:47:32.26ID:???
>>671
エクスプレス版を取りあえずダウンロードだけしといたw
SSMSが同じだからなあ…どうなんだろ
0674NAME IS NULL
垢版 |
2022/11/24(木) 11:28:43.27ID:DKlnX/+1
質問です。

テーブルA(1)---(∞)テーブルB(∞)---(1)テーブルA

こういう関係になるテーブルBを考えています。
即ち、テーブルAの外部キーをテーブルBの2列で持つことになります。
同じテーブルAについて外部キーを持っても、テーブルBの2列の意味はそれぞれで異なります。

こういうテーブルBの2列は、テーブルAの外部キーを持つので、列名の設定に困ります。
一列だけならforeignkeyofA_CDという列をテーブルBに設定すれば良いですが、こういう場合はどんなふうに列名を設定するのが良いのでしょうか。
0675NAME IS NULL
垢版 |
2022/11/24(木) 12:21:15.60ID:???
>>674
foreignkeyof ってググっても出ないから、そんな作法は一般的じゃないよね
普通に名詞だけの単語でテーブルA,B共通の名前にして、エイリアス名で分ければ?
0676NAME IS NULL
垢版 |
2022/11/24(木) 12:25:57.91ID:???
悩むくらいなら、
/* コメントxxxxx */
みたいにメモを残すほうが、あとでみてもわかる
0677NAME IS NULL
垢版 |
2022/11/24(木) 12:30:02.95ID:???
>>674
列名?
外部キー制約名じゃなくて?

列名ならそのカラムがテーブルAで持つ意味でつければいい

外部キー制約名はFK_テーブルA_テーブルBが一般的
2つ同じテーブル同士で外部キー制約を貼るなら
テーブルA側の列名も使って外部キー制約名を付ける
0678NAME IS NULL
垢版 |
2022/11/24(木) 12:34:41.41ID:???
>列名ならそのカラムがテーブルAで持つ意味でつければいい

buyerとsellerとか
primary_contact/secondary_contactとか
0679675
垢版 |
2022/11/24(木) 12:43:41.42ID:???
スレが盛り上がったところで、質問させていただきます
SQLCLRなんですが、複数のアセンブリがあって、その中の、一部のメソッドを仕様変更したとき、アセンブリとストアドの依存関係なしに、全部createやり直すのは普通ですか?邪道ですか?
0680675
垢版 |
2022/11/24(木) 12:46:57.35ID:???
再作成必要ないものまでcreate assembly、create procedureしてしまうんですよね
0681NAME IS NULL
垢版 |
2022/11/24(木) 15:15:06.11ID:???
>>679
普通ではないように思うが署名やテストも含め自動化できてるなら好きにすればいいんじゃない?
0682674
垢版 |
2022/11/26(土) 00:22:21.03ID:sFVTXftJ
皆様、レスありがとうございます。
参考になりました。
結局、次のようにしました。


table_A.列名あいう(table_Aの主キー)

table_B.列名あいう(table_A外部キー)
table_B.列名あいう_用途(table_A外部キー)

このように、用途がわかるように列名を設定しました。

ありがとうございます。
0683NAME IS NULL
垢版 |
2022/11/26(土) 16:16:33.61ID:D63qN8dA
同じ列名で格納かれているデータ異なるけど、関連があるなんてわかりにくいにもほどがあるだろw
0684NAME IS NULL
垢版 |
2022/11/26(土) 16:17:09.46ID:D63qN8dA
>>682
相互に参照し合う外部キー?
0685NAME IS NULL
垢版 |
2022/11/26(土) 16:18:35.53ID:D63qN8dA
1対Nを、1対「無限大」と表記する表記法なんて初めて見たわ。
0686NAME IS NULL
垢版 |
2022/11/26(土) 16:45:50.88ID:???
>>682
わるい
「列名ならそのカラムがテーブルAで持つ意味でつければいい」と書いたけど
「列名ならそのカラムがテーブルBで持つ意味でつければいい」の間違いだったわ

message.sender -> account.id
message.receiver -> account.id
0687NAME IS NULL
垢版 |
2022/11/26(土) 16:51:31.81ID:D63qN8dA
外部キー列と参照される列を混同するのは初心者あるあるだが、
純粋に間を取り持つテーブルを作った方がいい。

説明がいるデータモデルにしておくと、自分でもわからなくなる。
0688NAME IS NULL
垢版 |
2022/11/26(土) 18:53:09.89ID:o+PA739f
トランザクションデータの親子関係と、マスタデータの関係がごっちゃになっているのかな?
0689682
垢版 |
2022/11/28(月) 07:15:24.18ID:Y7UCoM6L
table_A.列名あいう(table_Aの主キー)

table_B.列名あいう(table_A外部キー)
table_B.列名あいう_用途(table_A外部キー)

table_Aの外部キーが保存されるこの2列ですが、table_Aの同じ行とリンクするものではありません。

table_B.列名あいう_用途(table_A外部キー)
は、たとえば
0690NAME IS NULL
垢版 |
2022/11/28(月) 07:19:51.81ID:Y7UCoM6L
>>689
table_B.列名あいう_用途(table_A外部キー)
は、たとえば、

table_B.列名あいう_処理ターゲット(table_A外部キー)
とでもして、処理と処理済みであることを銘記するためのものです。

table_B.列名あいう(table_A外部キー)がリンクするtable_Aの行とは違う行とリンクします。
0691NAME IS NULL
垢版 |
2022/11/28(月) 07:20:23.19ID:Y7UCoM6L
>>686
ありがとうございます。
そのように考えました。
0692NAME IS NULL
垢版 |
2022/11/28(月) 07:21:29.60ID:Y7UCoM6L
>>685
アクセスのGUIってそうなってなかった?
0693NAME IS NULL
垢版 |
2022/11/28(月) 07:28:43.92ID:Y7UCoM6L
>>690
table_B.列名あいう(table_A外部キー)
table_B.列名あいう_用途(table_A外部キー)

つまり、table_Bは、table_Aのサブテーブルでありながら、処理のターゲットにもされるテーブルということになります。
0694NAME IS NULL
垢版 |
2022/11/28(月) 14:59:50.69ID:iXYDTEGM
テーブルAの別のレコードの列を参照する列を同じレコードに持つテーブルB

これCOBOLの発想か?
0695NAME IS NULL
垢版 |
2022/11/28(月) 15:04:08.76ID:???
>>693
親子関係なのか
それならそういう命名もある程度納得できる

taskテーブルとtask_dependencyテーブルがあって
task_dependencyテーブルではtask Aが終わったら
task B, C, Dを実行するみたいな依存関係を管理する時に
↓こういうイメージの構成にして(A, B), (A, C), (A, D)の3レコードを登録する形だよね

task.task_id
task_dependency.task_id -> task.task_id
task_dependency.depentent_task -> task.task_id
0696NAME IS NULL
垢版 |
2022/12/02(金) 14:57:13.95ID:???
他サーバーのテーブルを参照するビューがクソ重くて辛い
データ転送バッチ作るしかないのか?
0697NAME IS NULL
垢版 |
2022/12/02(金) 17:56:05.96ID:???
レプリとかLog Shippingとかあるよ
0698NAME IS NULL
垢版 |
2022/12/05(月) 11:50:30.30ID:???
>>697
ありがとう
他サーバーは他の人が管理してるものだからいけるか謎だけどちょっと相談してみるわ
0699NAME IS NULL
垢版 |
2022/12/05(月) 21:06:27.64ID:JoOlcgho
>>698
SQL Serverはマテリアライズドビューがない

これはかなりの欠点
0701NAME IS NULL
垢版 |
2022/12/06(火) 01:23:03.08ID:mYqHptcX
>>700
それは標準SQLのマテリアライズドビューではなく、データベースそのものの物理的なレプリケーションでしかない。

こんなの乱暴すぎてアプリケーションからは危険すぎて使えない。

マテリアライズドビューがわからないのなら、マテリアライズドビューを知ってから反論した方がいい。
0702NAME IS NULL
垢版 |
2022/12/06(火) 15:29:27.72ID:???
>>701
何いってんのww
レプリとマテリアライズドビューの区別もできない上に
マテリアライズドビューが標準SQLになった妄想見てんのかww
恥ずかしいやつだなwww

オラクルしか知らんとマテリアライズドビューの本来の意味もわからんようになるのか
こうはなりたくないな
0703NAME IS NULL
垢版 |
2022/12/06(火) 17:18:32.85ID:???
オラクルだと昔はスナップショットと呼んでたから
マテリアライズドビューをスナップショットレプリケーションだと思い込んでるんだろ
0704NAME IS NULL
垢版 |
2022/12/06(火) 19:56:32.02ID:mYqHptcX
おまえらSQL Serverしか知らねえのまるわかりじゃねえかw
0705NAME IS NULL
垢版 |
2022/12/06(火) 20:00:28.19ID:mYqHptcX
>>702
あのさ、他のRDBMSではレプリケーションという言葉は広い意味の言葉で、製品ごとに定義が異なる。

さらにマテリアライズドビューはデータベースオブジェクトですよ?

SQL Serverで似たようなことをするには、全レコードをSELECTして他のテーブルに登録するくらいしかない。

他のRDBMSはSQLでマテリアライズドビューの操作ができる。
0706NAME IS NULL
垢版 |
2022/12/06(火) 20:02:10.27ID:mYqHptcX
>>703
「スナップショットレプリケーション」なんて言葉が出てくるのはSQL Serverくらい
0707NAME IS NULL
垢版 |
2022/12/06(火) 20:05:56.31ID:mYqHptcX
日本マイクロソフトのサポートや、日本マイクロソフトが作らせたOracleDBとの比較資料も大間違いだらけなんだぜ?

そのくらいマイクロソフトは自社製品がわからない。

日本マイクロソフトの品川本社のSQL Serverサポートもひどいレベル。

普通のデスクトップPCで試してみているだけ。
さも知ってましたみたいに答えるが、Bing検索で検索して答えるレベル
0708NAME IS NULL
垢版 |
2022/12/06(火) 20:34:37.28ID:mYqHptcX
マイクロソフトはSQL Serverの欠点を指摘されて、マテリアライズドビューはあるみたいなことを世界に発信している。

マテリアライズドビューは、ビューにインデックスを作成すれば解決みたいなことを言い出して、そのインデックスが実態がもはやただのテーブルにすぎない。

同じようにロックエスカレーションも悪く言われて、これも正反対のロックエスカレーションはすばらしいと言って回っているので、ますますSQL Serverが売れなくなった。
0709NAME IS NULL
垢版 |
2022/12/06(火) 20:37:02.65ID:???
>>705
> SQL Serverで似たようなことをするには、全レコードをSELECTして他のテーブルに登録するくらいしかない。
よくそんなレベルでレスできるもんだな...
0710NAME IS NULL
垢版 |
2022/12/06(火) 21:16:22.43ID:mYqHptcX
>>709
データがそんな大きくなければそうやるよ?

あなたは何と戦っているの?

そうじゃない、そうじゃないと言っていても、ただのイタいおじさんを通りすぎて、追放されるレベルだよ。
0711NAME IS NULL
垢版 |
2022/12/06(火) 21:32:40.36ID:???
> こんなの乱暴すぎてアプリケーションからは危険すぎて使えない。
とか言ってた奴が
> SQL Serverで似たようなことをするには、全レコードをSELECTして他のテーブルに登録するくらいしかない。
とかw
とりあえず何が危険なのか書いてみ
それでお前のレベルがわかる
0712NAME IS NULL
垢版 |
2022/12/06(火) 21:44:53.86ID:???
まいどまいど斜め上のレスを上から目線で書いちゃってwww
いつも笑わせてもらってる

こいつは特別アホだとしても
オラクル信奉者ってなぜか低レベルなやつ多いよなぁ
0713NAME IS NULL
垢版 |
2022/12/06(火) 21:51:47.80ID:BmDSm/mR
よろしくお願いします。

Date型で、日部分のみ指定した値に変更したいのですが、そういう関数はあるでしょうか。

元となる年月日から足し引きするような関数はあったのですが、直接指定するというものが見つかりません。

年、月、日に分解したあとに、日のみ変えてまたDATE型を組み立てるしかないのでしょうか。
0714NAME IS NULL
垢版 |
2022/12/06(火) 22:04:17.98ID:???
>>712
他のDBMSに精通したらオラクルを信奉したりしないからね
0715NAME IS NULL
垢版 |
2022/12/06(火) 22:38:13.91ID:???
>>713
SQL-Server 2022 なら
dateadd(day, n - 1, datetrunc(month, 日付))
でできると思うけどどう見ても素直に
datefromparts(year(日付), month(日付), n)
の方がわかりやすいと思う
0716NAME IS NULL
垢版 |
2022/12/06(火) 22:55:01.97ID:rSr0+yYs
>>715
早速レスをいただき、ありがとうございます。
専用関数がないのは残念ですが、確かにわかりやすいので、組み立て方式でいきたいとおもいます。

参考になりました!
0718NAME IS NULL
垢版 |
2022/12/07(水) 02:44:35.29ID:+zJ/wx/Y
>>717
こういうのがあるからアップデートしたくない

最初にテストしたら、そのまま何の変更も加えてほしくない
0719NAME IS NULL
垢版 |
2022/12/07(水) 17:41:32.59ID:KFl2dpu1
Sql server 2019と、SQL Server Management Studio(SSMS)について

SSMSを使って、Sql serverにsaで接続し、
ファンクションを作成しました。
作成用Create functionスクリプトの実行は完了しました。
しかし、SSMSの左ペインに表示されるはずの作成したファンクションが見つかりません。
そのファンクションも、SSMSには認識されておらず、dbo.ファンクション名を打とうとしても、インテリセンスが機能しません。

このとき、SSMSを再起動したのですが、状況は変わりませんでした。
しかし、Sql serverも再起動した後に試すと、SSMSはさきのファンクションを認識しました。

こういう挙動は普通ですか?
ストアドプロシジャなら、直ぐに認識されなくても、いくらなんでもSSMSで再接続さえすれば認識されたと思います。
0720NAME IS NULL
垢版 |
2023/01/09(月) 01:53:59.58ID:get9qHwd
>>719
データベースの情報を完璧に取得し直して表示するという仕様は、完璧である必要があると思っているんですか?

データベースオブジェクトを検索して表示するのも負荷のかかることです。

SSMSで一時的に見えなかったことを問題視してますが、そんなに重大な問題ですか?

SSMSではなく、クエリで存在を確認する習慣をつけた方がいいですよ。
0721NAME IS NULL
垢版 |
2023/01/09(月) 05:36:49.23ID:22YCMRiX
ストアドプロシジャ内で、
サブクエリによるテーブルの導出を
テーブル値ファンクションで行うとパフォーマンスは落ちるのでしょうか。

各ストアドプロシジャ内で、同じ導出を行うのも非効率だなと思って、流用しやすい形でfrom 句にファンクションを使おうと思っています。
0722NAME IS NULL
垢版 |
2023/01/09(月) 17:03:36.75ID:???
>>719
SSMSってDB情報とかキャッシュしてるから、まあよくあることなんじゃね

>>721
テーブル値ファンクションって、おそらく実行時に展開されないので
サブクエリより実行計画の幅が狭いはず
なのでサブクエリより実行効率が上がるとは思えん
0723NAME IS NULL
垢版 |
2023/01/09(月) 17:23:40.09ID:???
>>719
手動でRefreshしなよ
わからなかったら「SSMS Refresh」でググって
インテリセンスのキャッシュも同じ
DBに不必要な負荷をかけないために昔からそういう仕様だったはず
0724NAME IS NULL
垢版 |
2023/01/09(月) 22:12:05.07ID:???
>>721
Inline Table Valued Functionなら
SELECT文を直接書くのと同じように展開されてから
オプティマイザが実行プランを生成するのでパフォーマンスは変わらない
0725NAME IS NULL
垢版 |
2023/01/10(火) 05:05:40.83ID:M8ITj7+H
>>722
>>724

レスありがとうございます。
テーブル値ファンクションを、From句や、
OUTER APPLYで使うと、パフォーマンスおちないか心配でした。

ストアドプロシジャにベタ書きするように最適化されると聞いて安心しました。

しかし、再利用性を高めるとはいえ、
SQLにサブルーチン的な発想をもちこむのは心が痛みます。
0726NAME IS NULL
垢版 |
2023/01/10(火) 05:48:19.71ID:j9AMOfqi
>>725
整合性の取れた最新のデータを取得しないといけない理由があるんですか?

理由がないのならそんなやり方は捨てるべきです。

しかもデータ量について言及がないので、データ量が少なければ、どういう方法でやっても速度性能なんてほとんど変わりません。

パフォーマンスは低下するが、1.00秒かかるクエリが1.01秒になるような性能悪化なら気にしても意味はありません。
0727NAME IS NULL
垢版 |
2023/01/10(火) 16:42:39.89ID:MfwzOWLo
>>726
>整合性の取れた最新のデータを取得しないといけない理由があるんですか?理由がないのならそんなやり方は捨てるべきです。

どういうこと?
静的テーブルに、予めデータを用意しておいて、
これを使うということ??
0728NAME IS NULL
垢版 |
2023/01/10(火) 18:38:33.71ID:???
>>725
通常のビューや、CTEでダメな理由がなにかあるのか?
0729NAME IS NULL
垢版 |
2023/01/10(火) 19:15:25.24ID:1urMig+5
>>728
再利用できない
0730NAME IS NULL
垢版 |
2023/01/10(火) 19:26:28.71ID:???
>>729
そこで言う再利用って何?
CTEはともかく、ビューが再利用できないわけないんだが
0731NAME IS NULL
垢版 |
2023/01/10(火) 20:33:42.25ID:aTVN3pRn
>>730
テーブル値ファンクションで、定義しとけば、
他でテーブルのように何度でも使える。
修正も一箇所ですむので簡単。
0732NAME IS NULL
垢版 |
2023/01/10(火) 22:02:19.98ID:???
>>727
そいつはDB板の有名荒らしなので相手にするのは時間の無駄だよ
0733NAME IS NULL
垢版 |
2023/01/10(火) 22:03:23.61ID:aTVN3pRn
>>732
ありがとうございます。
0734NAME IS NULL
垢版 |
2023/01/10(火) 22:08:48.47ID:???
条件となる値が固定ならビュー
条件となる値が可変ならinline TVF
0735NAME IS NULL
垢版 |
2023/01/11(水) 05:06:06.88ID:icJsem5h
>>734
引数なしのテーブル値ファンクションは駄目?
0736NAME IS NULL
垢版 |
2023/01/11(水) 14:22:52.23ID:???
>>731
だからそれだと、ビューがダメな理由にならないんだが?
0737NAME IS NULL
垢版 |
2023/01/11(水) 16:50:03.30ID:iyfLfCdS
>>736
ビューはかつて使ったことないけど、
from句や、OUTER APPLYできるのかな。

ファンクションで作っておくと、引数追加したくなっても変更しやすそう
0738NAME IS NULL
垢版 |
2023/01/11(水) 18:33:20.02ID:???
>>737
>from句や、OUTER APPLYできるのかな。
当然使えるよ
SELECTするだけならTableが使えるところならどこでも使えると思うよ
更新系はいろいろ制約があってそれを満たしてなければ使えない
0739NAME IS NULL
垢版 |
2023/01/13(金) 04:01:42.26ID:gJb3onoK
>>738
ありがとうございます。
0740NAME IS NULL
垢版 |
2023/01/13(金) 12:39:45.86ID:???
SQL ServerのPKやインデックスは作成後にメモリに常駐し続けるものなんでしょうか?
0741NAME IS NULL
垢版 |
2023/01/13(金) 13:47:19.40ID:???
>>740
キャッシュにブロック単位で読み込まれて残ってることはあるけど常駐はしない
0742NAME IS NULL
垢版 |
2023/01/13(金) 16:02:17.39ID:ULxEl8AG
SQL Server for LinuxでActive×Activeの遠隔地マルチマスター構成作れるの?
0744NAME IS NULL
垢版 |
2023/01/13(金) 21:27:19.96ID:???
>>742
WindowsかLinuxかに関係なくSQL Serverが持ってる機能だけじゃできないと思うぞ
Oracleと同じでGoldenGateみたいな3rdパーティの製品依存
0746NAME IS NULL
垢版 |
2023/01/14(土) 05:02:21.29ID:wGD1MOCC
大規模システムはOracleDB、

中小システムはSQL Serverという棲み分けは

結局、変わらなかった。

今後も変わることはない。

なぜならマイクロソフトが諦めているから。
0747NAME IS NULL
垢版 |
2023/01/14(土) 15:34:58.44ID:???
十数年前ならともかく
本当に大規模なシステムでは
もうオラクルやSQL Serverを検討するような時代じゃないからな
0748NAME IS NULL
垢版 |
2023/01/15(日) 06:58:05.77ID:2joXWGOy
>>747
なに使うの
0749NAME IS NULL
垢版 |
2023/01/15(日) 14:10:17.70ID:7Mz5p9+i
>>747
勘違いしすぎだぞ
クラウドでも大企業はオラクルクラウド、AWSやAzure上で同じ製品を使っている
0751NAME IS NULL
垢版 |
2023/01/15(日) 15:07:57.87ID:???
>>749
大規模なシステムと大企業のシステムの違いもわからないのかww
脳みそバグってるね
0752NAME IS NULL
垢版 |
2023/01/15(日) 15:24:23.29ID:7Mz5p9+i
子供みたいな反論だな
0753NAME IS NULL
垢版 |
2023/01/15(日) 15:24:53.65ID:7Mz5p9+i
単にお金がない企業は安いものを選択するしかないだけの話
0754NAME IS NULL
垢版 |
2023/01/15(日) 16:07:23.25ID:???
そうなんだよ
お金がないからAmazonもOracle全部やめようとしてるんだよなぁ
0755NAME IS NULL
垢版 |
2023/01/15(日) 16:12:59.82ID:???
Googleもお金がないからオラクルなんてボッ・・・高価なものは使えない
Facebookも右肩下がりだから節約してMySQL
0756NAME IS NULL
垢版 |
2023/01/15(日) 19:18:52.45ID:7Mz5p9+i
AWSなんてすげーお金がかかるのに騙されて契約するのが日本人
0757NAME IS NULL
垢版 |
2023/01/15(日) 19:20:18.35ID:7Mz5p9+i
本番環境しか見積もらずにAWSに完全移行して、運用保守環境がなくて積む企業が多発しているのが現状。
0758NAME IS NULL
垢版 |
2023/01/26(木) 02:55:42.92ID:0ZdAuIEw
あげ太郎
0761NAME IS NULL
垢版 |
2023/02/12(日) 07:52:50.32ID:???
SSE2017相手なんだけど
SSMS19は18から設定を引き継ぐと繋がるけど
設定をクリアして新規で接続しようとすると
証明書がどうたらって出て接続エラーになる
でアンインストールしてSSMS18を入れ直すと
新規設定からでも接続できた

SSE2019以降の組み合わせだとどうなるか…
検証が非常に面倒だw
0762NAME IS NULL
垢版 |
2023/02/13(月) 15:44:50.45ID:???
SSMS19の接続問題は接続の暗号化オプションが原因だった
SSMS18は暗号化が既定でオフだった
0763NAME IS NULL
垢版 |
2023/02/14(火) 03:21:26.51ID:???
>>762
SSMSだけの問題じゃなくて、ほかのクライアントでも問題出てるから
サーバーかクライアントドライバでのデフォルト設定が変わってるっぽい

とりあえず接続文字列修正してるけど、デフォルト設定変える方法探さんとなぁ
0764NAME IS NULL
垢版 |
2023/02/14(火) 20:18:55.91ID:???
SSMS19は設定ファイル自体を削除しちゃうと
接続暗号化オプションにもチェックが入るけど
詳細メニューで一度リセットボタン押しとくと
その後は既定で暗号化オプションがオフになる
0765NAME IS NULL
垢版 |
2023/02/14(火) 20:21:19.25ID:???
Azureの方も更新来てたけど
引継でも新規接続でも問題無いな
0766NAME IS NULL
垢版 |
2023/06/02(金) 23:00:42.49ID:wLn6qWZ8
SQL Serverは他のRDBMSと実装の方向性が違いすぎて、もはや作りが崩壊している。
0767NAME IS NULL
垢版 |
2023/06/08(木) 18:27:59.82ID:???
具体的な事例を挙げてくれ
0768NAME IS NULL
垢版 |
2023/06/11(日) 12:32:26.82ID:0iWIq9DX
>>767
特定のインデックスがあるとテーブルが不要になるあたり
0769NAME IS NULL
垢版 |
2023/06/11(日) 13:31:49.72ID:???
もっと具体的に。
0770NAME IS NULL
垢版 |
2023/06/11(日) 13:34:41.55ID:0iWIq9DX
>>769
列ストアインデックス

根本的に実装がおかしいと言っているようなもの
0771NAME IS NULL
垢版 |
2023/06/11(日) 14:31:03.94ID:???
いや、個別の機能とかそういうのはいいから。
それをどう使うとどういう風になにが崩壊するのか実際的に語ってみて。
0772NAME IS NULL
垢版 |
2023/06/11(日) 15:46:57.75ID:???
ボラクル君いじりは非生産的なのでやめようね
0773NAME IS NULL
垢版 |
2023/06/11(日) 20:50:10.54ID:0iWIq9DX
>>771
テーブルで実装できなかったことをごまかしている
0774NAME IS NULL
垢版 |
2023/06/11(日) 20:55:17.39ID:???
崩壊してないじゃん。w
0775NAME IS NULL
垢版 |
2023/06/11(日) 22:37:56.63ID:0iWIq9DX
データの読み取りだけで高負担という欠点をさらしているわけだが、読み取り一貫性の実装が何度、作り直しても同じという諦めはマイクロソフト自身が諦めていること。

マイクロソフトドキュメントでわかるとおり、技術的にわかる人間を投入していないからこうなる。
0776NAME IS NULL
垢版 |
2023/06/11(日) 22:53:30.42ID:???
崩壊してないじゃん。w
0777NAME IS NULL
垢版 |
2023/06/12(月) 17:56:19.91ID:???
>>770
データウェアハウス向けの機能追加したら、他のRDBMSと実装の方向性が違いすぎるってか

>>データの読み取りだけで高負担という欠点
エビデンスは?

>読み取り一貫性の実装が何度、作り直しても同じという諦めはマイクロソフト自身が諦めている
エビデンスは?

>マイクロソフトドキュメントでわかるとおり、技術的にわかる人間を投入していない
たとえばどのドキュメント?

せめて、具体的なURLの一つでもあげてから言えよ
0778NAME IS NULL
垢版 |
2023/06/14(水) 16:03:13.72ID:14/Kwe66
SQL Serverの営業職なのか?

SQL Serverは同時実行性を切り捨てている。

2005から2008でコードを書き直したが、結局、仕様がたいして変わらないものが納品されたことぐらい歴史を勉強しろよ。
0779NAME IS NULL
垢版 |
2023/06/14(水) 16:08:00.63ID:14/Kwe66
>>777
他のトランザクションを邪魔する形で、読み取り一貫性を実装している。

データそのものを排他ロックするSybaseの流れから方針転換できなかった。

だから、列ストアインデックスのようにテーブルのコピーを作って、読み取りの並列化をするしかなくなった。

批判をしているんじゃなくて、事実を書かれて頭に来ているのは、ちょっとおかしい。
0780NAME IS NULL
垢版 |
2023/06/14(水) 20:11:54.11ID:???
だから、どこが崩壊してるんだよ。
0781NAME IS NULL
垢版 |
2023/06/14(水) 20:43:15.61ID:???
だからエビデンスを出せと
せめてURLの一つでも張らないと何の説得力もないよ

>>778
>仕様がたいして変わらない
中身のコードはどうでもいいが、バージョン上がって仕様が変わってたら大変なんだが?

>>779
ロックで一貫性を保つのは普通の方針だと思うが、それが実装の方向性が違うって?

で、列ストア以前にスナップショット実装されてるはずだが、それについては?
まあ、どうせ何の根拠もなく使い物にならないっていうんだろけど
0782NAME IS NULL
垢版 |
2023/06/15(木) 05:40:55.29ID:Q/3PXPD+
何が気に入らないのか?
0783NAME IS NULL
垢版 |
2023/06/15(木) 05:47:09.29ID:Q/3PXPD+
>>781
他のRDBMSは仕様を変えながら進化している。
後方互換性をマイクロソフトがアピールしていることもないし、そもそも後方互換性を気にしないのがSQL Server。

これを批難されているように受け取るんだろうけど、SQL Serverは日本マイクロソフトが作っているんじゃねえんだぞ?
0784NAME IS NULL
垢版 |
2023/06/15(木) 05:57:11.40ID:Q/3PXPD+
SQL ServerはSQL ServerのDBAはなかなかいなくて、マイクロソフトは売りっぱなしの商売下手。

すでに終わったSQL Serverの資格も普及させる気があるとは思えなかった。いまはAzureのおかげでセット販売ができているからいいけど。
0785NAME IS NULL
垢版 |
2023/06/15(木) 20:47:54.90ID:???
だから、どこが崩壊してるんだよ。

結構真面目に聞いてたつもりだったけど、何の根拠を挙げることもできないのね。
ただのアンチさんの戯言だったわけだ。
0786NAME IS NULL
垢版 |
2023/06/17(土) 08:32:00.55ID:5Ljw3AHe
SELECTだけで必要以上にレコードを排他ロックすることがいまだにあり、これによる同時実行性の低下対策として、レコードのコピーを使う仕組みが作られて、それを使わされている。

要するにマイクロソフトが指示した仕様を手抜きで前のバージョンのコピープログラムで再構築してしまったのが不幸の始まり。

マイクロソフトはいまだに「ロックエスカレーションは必ずしも悪いことではない」と説明せざるをえない。
0787NAME IS NULL
垢版 |
2023/06/17(土) 08:40:49.47ID:5Ljw3AHe
>>785
テーブルをSELECTしながら処理するのと、テーブルをSELECTし、同じSELECT結果を登録した一時テーブルや同じデータを持つ列ストアインデックスを参照して処理するのを比べると、後者の方が短時間で終わる。

さらにやばいのがSQL Serverはいまでも単にSELECTしただけで、理由のわからない大幅な性能劣化が起きることがある。

マイクロソフトそのものが諦めているのに、SQL Serverに期待しすぎの人間がこのスレにいるのは、日本マイクロソフトの周知不足なんだろうな。
0788NAME IS NULL
垢版 |
2023/06/17(土) 08:44:00.04ID:5Ljw3AHe
SQL Serverは同じテーブルに複数のセッションから同時にSELECT文を発行すると、極端に遅くなることがある。

さすがにこう説明すれば、作りに問題があることがわかるだろ?
0789NAME IS NULL
垢版 |
2023/06/17(土) 11:04:09.78ID:???
だから、どこが崩壊してるんだよ。
自分の台詞だろ。まずそこを説明しろよ。
0790NAME IS NULL
垢版 |
2023/06/17(土) 11:04:34.79ID:???
あ、失礼。
x 説明
o 証明
0791NAME IS NULL
垢版 |
2023/06/18(日) 23:16:22.92ID:???
何の根拠もなくここまで文句言えるとは
SQL Serverに親でも殺されたのか

>>786
聞いたことないけど、根拠は?
まあ、いまだに自分で明示的にロックかけないとまともに動かないDBを使ってる人は
排他ロックと共有ロックの区別がつかないんだな

>>787
どんな処理をしたらそうなるって?
で、その理由をお前が理解できないから、なぜかそうなるですましてるんだろ

期待してるどうこうではなくて、正しく理解して使いたいだけで
正しいかどうかもよくわからん情報を垂れ流されても困るんだがな
0792NAME IS NULL
垢版 |
2023/06/19(月) 19:27:17.18ID:4/v87WeP
共有ロックの意味が違うぞ
0793NAME IS NULL
垢版 |
2023/06/24(土) 16:50:28.70ID:kF0ecW7R
3行めから6行目までのデータを抽出するときってどうやって書いたらいいですか?
0794NAME IS NULL
垢版 |
2023/06/24(土) 16:53:00.13ID:kF0ecW7R
>>793
SELECT *
FROM テーブル名
LIMIT 4
OFFSET
0795NAME IS NULL
垢版 |
2023/06/24(土) 16:53:55.90ID:kF0ecW7R
>>794
OFFSET 6;
とするとエラーが出ました
0796NAME IS NULL
垢版 |
2023/06/24(土) 19:51:58.99ID:???
この辺りのこと?
ttps://sql-oracle.com/sqlserver/?p=857
0797NAME IS NULL
垢版 |
2023/06/24(土) 22:11:08.28ID:kF0ecW7R
>>796
すいません。
これです
調べきれてなかったです。
ありがとうございます。
0798NAME IS NULL
垢版 |
2023/06/25(日) 09:25:22.34ID:ABQ2v09G
2行目の5列目のみを抽出したいときってどうすればできますか?
SELECT 5列目の列名
FROM テーブル名
まではわかったのですが。。。
0799NAME IS NULL
垢版 |
2023/06/25(日) 11:29:58.29ID:???
796 の応用でできるでしょうに。
0800NAME IS NULL
垢版 |
2023/06/25(日) 11:47:11.55ID:ABQ2v09G
>>799
同じように入力してみます。
すいません。
0801NAME IS NULL
垢版 |
2023/06/27(火) 17:05:56.20ID:???
select s from テーブル名 s where s.email = $1;

この s って何でしょうか?
AS句を省略してる的な感じなのでしょうか?
0802NAME IS NULL
垢版 |
2023/06/27(火) 17:33:51.50ID:???
そうだよ
テーブル名のエイリアス
0803NAME IS NULL
垢版 |
2023/06/27(火) 18:30:54.86ID:???
>>802
合ってたんですね。
ありがとうございます。
ググるにも何て調べたら良いかわからず困っていました。
0804NAME IS NULL
垢版 |
2023/06/27(火) 19:16:12.82ID:XSnmrLrK
同じテーブル同士をjoinする意味ってなに?
0805NAME IS NULL
垢版 |
2023/06/27(火) 19:16:57.47ID:XSnmrLrK
ですか?
同じテーブルを隣同士に繋げても意味ない気がして。。
0806NAME IS NULL
垢版 |
2023/06/27(火) 19:27:51.68ID:???
同じテーブルでも行ごとに中身がちがうんだから
違う行をつなげる意味はあるだろう
0807NAME IS NULL
垢版 |
2023/06/27(火) 19:55:39.96ID:XSnmrLrK
行を消せたりするってこと?
0808NAME IS NULL
垢版 |
2023/06/27(火) 21:58:44.24ID:XSnmrLrK
LEFT OUTERJOINの説明で、結合した時に余計なデータを取ってくるとノイズになるって説明見たんですけど、(ノイズ)ってなんの意味ですか?
NULLばっかりになるってことですか?
0809NAME IS NULL
垢版 |
2023/07/14(金) 20:40:09.51ID:???
>>808
行数もそうだがむしろ
select *fromなんて指示したらどえらい列になるってことでは
0810NAME IS NULL
垢版 |
2023/07/15(土) 12:24:05.87ID:ZDu5V+2v
0811NAME IS NULL
垢版 |
2023/07/15(土) 13:28:07.72ID:???
不要な列のデータ=ノイズって解釈なのだろうとエスパー。
0812NAME IS NULL
垢版 |
2023/07/15(土) 16:37:15.54ID:???
たぶんそういう意味だろうね
(特に右テーブルの)不要な列を取ってくるなってことを言いたかったんだろう
0813NAME IS NULL
垢版 |
2023/07/15(土) 22:00:38.83ID:aJ3C4xJo
>>812
左右が逆
0814NAME IS NULL
垢版 |
2023/07/15(土) 22:04:46.99ID:aJ3C4xJo
>>812
難解な表現だな。
0815NAME IS NULL
垢版 |
2023/07/15(土) 22:05:30.45ID:aJ3C4xJo
>>809
列指定にアスタリスクを使うことはあまりない
0816NAME IS NULL
垢版 |
2023/08/07(月) 00:03:36.76ID:KYaloyhj
Developer Editionのライセンス規約数年前に変わったはずなのに、未だに開発者しか使えないと
大手ベンダですら勘違いしているのはマイクロソフトの宣伝周知足りないよな
こっちは損しないからどうでもいいけど、無駄な金払う顧客が可哀想・・・
0817NAME IS NULL
垢版 |
2023/08/08(火) 01:33:23.95ID:???
昔もいまも開発用途にしか使えないと思うんだが

昔はどうで今はどうなのか詳しく
0818NAME IS NULL
垢版 |
2023/09/19(火) 00:15:00.16ID:???
それってどうしてそうなの?
0819NAME IS NULL
垢版 |
2023/09/19(火) 00:29:15.64ID:???
https://www.microsoft.com/ja-jp/sql-server/sql-server-downloads

SQL Server 2022 Developer は、非運用環境におけるデータベースの開発およびテスト向けの、全機能を備えた無料エディションです。

SQL Server 2022 Express は、デスクトップ、Web、小規模サーバー向けのアプリケーションの開発と運用に最適な、SQL Server の無料エディションです。
0820NAME IS NULL
垢版 |
2023/10/04(水) 00:26:39.56ID:???
クエリストア、めちゃくちゃ便利ですね
Oracleから移ってきたけどsql serverの便利さ
0821NAME IS NULL
垢版 |
2023/10/04(水) 00:28:48.45ID:???
に驚いています。
ssmsやc#との連携のしやすさなどエコシステム全体がユーザーフレンドリーな感じ
逆にOracleが不便なだけなのかもだけど
0822NAME IS NULL
垢版 |
2023/10/08(日) 08:12:40.58ID:1K2SEOD7
公式ドキュメントに問題があるせいで伸びないSQL Server
0823NAME IS NULL
垢版 |
2023/10/18(水) 08:53:43.60ID:???
ねぇ…試してみる?
0824NAME IS NULL
垢版 |
2023/10/19(木) 00:03:00.82ID:???
エラーの有無にかかわらずログテーブルへの出力をしたいんですが、オラクルのような自律型トランザクションってないんですよね…
皆さんどうやってます?
0825NAME IS NULL
垢版 |
2023/10/19(木) 15:21:35.75ID:???
それってメインの処理は成功してログテーブルへの出力が失敗した場合はどう対処してるの?
0826NAME IS NULL
垢版 |
2023/10/19(木) 20:34:46.35ID:???
テキストファイルに吐いといて定期的にログテーブルに乗せるとか
原始的すぎるかな
0827NAME IS NULL
垢版 |
2023/10/19(木) 20:35:14.26ID:???
テキストファイルに吐いといて定期的にログテーブルに乗せるとか
原始的すぎるかな
0828NAME IS NULL
垢版 |
2023/10/19(木) 20:35:48.55ID:???
テキストファイルに吐いといて定期的にログテーブルに乗せるとか
原始的すぎるかな
0830NAME IS NULL
垢版 |
2023/10/20(金) 19:12:09.41ID:???
本当にロールバックさせたいとこだけ子トランザクションにして全体はコミットする
0831NAME IS NULL
垢版 |
2023/10/20(金) 19:12:18.60ID:???
本当にロールバックさせたいとこだけ子トランザクションにして全体はコミットする
0832NAME IS NULL
垢版 |
2023/10/21(土) 09:43:57.33ID:???
トランザクションをハンドリングするレイヤーとログ出力するレイヤーが揃ってないんだろう
テーブル変数やリンクテーブル使った回避策もあるけど揃ってないのがアンチパターンなので設計を見直したほうがいい
0833NAME IS NULL
垢版 |
2023/10/21(土) 13:56:10.51ID:???
設計がおかしいって言っとけばなんかわかってる感が出るから便利よね
どうおかしいかは言ってる本人もわからない
0834NAME IS NULL
垢版 |
2023/11/18(土) 00:15:40.15ID:t4HCeZxT
Accessマスターしたんだが次何やればいい?
0836NAME IS NULL
垢版 |
2023/12/07(木) 00:03:22.93ID:???
ssmsとazure data studioそれぞれで実行計画出したときの不足インデックス提案が微妙に違うことに気づいたけどなんで?
0837NAME IS NULL
垢版 |
2023/12/14(木) 14:28:23.30ID:???
ごめん、ポスグレに移行します
0838NAME IS NULL
垢版 |
2023/12/14(木) 14:37:57.09ID:LkoJvXxu
いいね👍
0839NAME IS NULL
垢版 |
2023/12/14(木) 23:52:39.82ID:???
azureの料金上がるし、azureからawsに乗り換えるってなるとDBもついでにsql serverからauroraに移行、みたいな話は増えそう
0840NAME IS NULL
垢版 |
2023/12/16(土) 23:22:24.72ID:dHU1nQbd
>>839
オラクルクラウドだろ?
0841NAME IS NULL
垢版 |
2023/12/16(土) 23:48:47.64ID:???
オラクルクラウドとか罰ゲーム
VMがタダなのでたまに使うくらい
0842NAME IS NULL
垢版 |
2023/12/17(日) 01:42:37.95ID:rc5EPYnZ
オラクルクラウドはAzureと提携しているんだが?
0843NAME IS NULL
垢版 |
2023/12/17(日) 02:28:25.20ID:???
「提携してるんだが」wwwwww
0844NAME IS NULL
垢版 |
2023/12/17(日) 21:30:43.12ID:rc5EPYnZ
知らねえだけか
Azureの意味も製品の単位だとまちがって思い込んでいるな
0845NAME IS NULL
垢版 |
2023/12/18(月) 08:18:13.62ID:???
awsのマネージドsql serverって実際移行先としてどうなんだろう
0846NAME IS NULL
垢版 |
2023/12/20(水) 15:34:03.74ID:6ZdiLoKb
>>845
クソ高いだけ
0847NAME IS NULL
垢版 |
2024/01/03(水) 17:51:37.12ID:???
クラウドはDBが一番コストかかるので頭が痛い
案件ごとにチューニングしてvCore2つなんとか減らせるかどうか…を突き詰めるのしんどいわ
0848NAME IS NULL
垢版 |
2024/01/04(木) 19:09:30.45ID:9A15oU4c
みんなの後悔するんだよな
0849NAME IS NULL
垢版 |
2024/01/04(木) 21:01:53.61ID:???
インフラメンテコストを丸投げできるなら安い
DBサーバのメンテ不足で痛い目見た経験ある人はこのスレ多いでしょ
0850NAME IS NULL
垢版 |
2024/01/05(金) 22:59:11.61ID:E7vKZkjZ
オラクルクラウドはいいぞ
なんせただでサーバー立てられるからな
ある時よくわからん理由で消されるけどwww
0851NAME IS NULL
垢版 |
2024/01/06(土) 00:13:48.60ID:???
数年前に勝手にインスタンス消されたってツイッターで騒ぎあったね
信用してないからタダでも使わないかなw
0852NAME IS NULL
垢版 |
2024/01/06(土) 22:08:12.83ID:+8fz8nB8
数年前と現在の区別がないのか
0853NAME IS NULL
垢版 |
2024/03/18(月) 00:34:07.58ID:???
サブスクがコスト高でオンプレ回帰の流れ
クラウドの役割なんてバックアップ程度が相応しい
0854NAME IS NULL
垢版 |
2024/03/18(月) 00:50:59.03ID:???
お前の中ではそうなんだろうな
0855NAME IS NULL
垢版 |
2024/03/18(月) 01:01:28.53ID:???
定期的にボラクル君が出現するねw
それも決まってなぜかSQL Serverスレww
0856NAME IS NULL
垢版 |
2024/03/18(月) 04:06:55.63ID:???
従量課金のことをサブスクと呼ぶやつとは希少種だな
0857!
垢版 |
2024/04/29(月) 04:26:52.27ID:???
azureで無料版サーバレスがプレビュー
レスを投稿する