Microsoft SQL Server 総合スレ 12

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
レスを投稿する