回答:
できますが、私はしません。[MyApp.Sales]などの角括弧でDB名を常にラップする必要があります。
要約すると、健全性を重視するなら、それをしないでください。
技術的に可能であっても、それは非常に悪い考えだと思います。
長年にわたって、4つの部分からなる命名規則を理解するのは難しいことですが、それはかなり明白なように思えますが、
server_name.database_name.schema_name.object_name
彼らがこのようなものを見たらどうなるか想像してみてください:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
または:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
物事をシンプルに保つことが重要です。
他の誰かがこの質問に遭遇した場合...
ユーザーが混乱する可能性があるだけでなく、一部のツールが混乱する可能性があるため、これは悪い考えであることに留意してください。
マイクロソフト自体でさえこれに問題があります。Microsoft Queryを使用して(ODBC経由で)データベースをExcelシートに接続しようとすると、接続するデータベースを選択できる構成ウィザードが表示されます。ただし、ドットを含むデータベースを選択すると、サーバーが見つからなかったことを示すエラーが生成されます。ウィザードは値のエスケープが必要かどうかを確認せず、識別子を盲目的に連結しているようです。
もちろん回避策はありますが、最初からこれを行わないことにより、いくつかのトラブルを回避できます。
データベース名、パブリケーション名、ユーザー名にピリオドを使用しないでください。また、名前にピリオドを使用しないことを強くお勧めします(列、テーブル、ビュー、データベースなど)。
更新:マイナスのダッシュ「-」が同様の問題を引き起こすことを確認できます。
ここで何が起こるかです:
SQL Serverは、システムストアドプロシージャのような内部使用のためにスクリプトを使用します。既にここで述べたように、使用するコマンドは、名前を括弧に入れることを強制する場合があり、それは(真剣にmicrosoft?)ストアドプロシージャの使用に対して(常に)大丈夫ではありません。
実際、ストアドプロシージャはすべてのデータベースを反復処理し、データベース名を適切にエスケープしないため、放棄情報をクリーンアップすることはできません。このイテレーションは、8を超えるSPでパッチを適用することができなかった複雑なことです。
さらに、MMCまたはスクリプトを使用してレプリケーションの競合を編集することはできません。名前の中にドットを含む1つの(One!)データベースがある場合、これらの問題はeverey db、すべての出版物で発生します。
これらは私が持っている出来事です。複雑なSQLアクションはsql言語で処理され、ベースが適切であれば正常に機能します。
Microsoft Queryを使用して(ODBC経由で)データベースをExcelシートに接続しようとすると、接続するデータベースを選択できる構成ウィザードが表示されます。- AKZENT
これらのエラーはサードパーティのソフトウェアでより頻繁に見つかる可能性があるため、SQLサーバー上のあらゆる名前にドットを使用しないでください。
-
アンダースコア_
を使用でき、角かっこで名前を囲む必要がないのに、なぜダッシュを使用するのですか?