Jika saya menggunakan nama database dengan titik di dalamnya di SQL Server (2005 atau 2008), sesuatu seperti "MyApp.Sales", apakah ini akan menimbulkan masalah?
Jika saya menggunakan nama database dengan titik di dalamnya di SQL Server (2005 atau 2008), sesuatu seperti "MyApp.Sales", apakah ini akan menimbulkan masalah?
Jawaban:
Anda bisa , tapi saya tidak mau. Anda harus selalu membungkus nama DB dengan tanda kurung siku seperti [MyApp.Sales].
Jadi, rekapnya: jika Anda menghargai kewarasan Anda, jangan lakukan itu.
Saya pikir itu ide yang sangat buruk bahkan jika secara teknis memungkinkan.
Selama bertahun-tahun saya menemukan bahwa banyak orang mengalami kesulitan memahami konvensi penamaan empat bagian walaupun tampaknya cukup jelas:
server_name.database_name.schema_name.object_name
Bayangkan apa yang akan terjadi jika mereka melihat sesuatu seperti ini:
MAIN-SQL.[MyApp.Sales].hr.CompetitorsProducts
atau:
[MAIN-SQL\EXPRESS].[MyApp.Sales].sch_HR.[Products From.Our-Competitors]
Menjaga segala sesuatunya sederhana adalah penting.
Jika ada orang lain yang menemukan pertanyaan ini ...
Perlu diingat bahwa ini bukan hanya ide yang buruk karena pengguna mungkin bingung, tetapi juga karena beberapa alat mungkin bingung.
Bahkan Microsoft sendiri memiliki masalah dengan ini. Jika Anda mencoba menghubungkan database Anda ke lembar excel menggunakan Microsoft Query (via ODBC), Anda mendapatkan panduan konfigurasi yang memungkinkan Anda memilih database yang ingin Anda sambungkan. Namun memilih database yang berisi titik akan menghasilkan kesalahan yang menyatakan bahwa server tidak dapat ditemukan. Tampaknya bahwa penyihir tidak memeriksa apakah nilai-nilai perlu melarikan diri dan membabi buta menggabungkan pengidentifikasi.
Tentu saja ada tempat kerja, tetapi Anda menyelamatkan diri dari masalah dengan tidak melakukan ini sejak awal.
Jangan gunakan periode dalam nama basis data, nama publikasi, nama pengguna. Dan saya sangat menyarankan untuk tidak menggunakan periode dalam nama (kolom, tabel, tampilan, database, dll)
Pembaruan: Saya dapat mengkonfirmasi, bahwa tanda minus, tanda hubung "-" menyebabkan masalah serupa.
Inilah yang terjadi:
SQL Server menggunakan skrip untuk penggunaan internal seperti prosedur yang tersimpan sistem. Seperti yang telah disebutkan di sini, perintah yang Anda gunakan kadang-kadang akan memaksa Anda untuk memasukkan nama ke dalam tanda kurung dan itu (serius microsoft?) Tidak (selalu) oke untuk penggunaan prosedur tersimpan .
Sebenarnya saya tidak dapat lagi membersihkan informasi tentang abonemen karena prosedur tersimpan iterates melalui semua database dan tidak luput dari nama-nama database dengan benar. Iterasi ini adalah kompleks yang saya tidak dapat menambalnya di lebih dari 8 SP.
Ditambah lagi, saya tidak dapat menggunakan MMC atau skrip untuk mengedit konflik replikasi . Jika Anda memiliki satu (Satu!) Database yang memiliki titik di dalam namanya, masalah ini akan muncul pada everey db, setiap publikasi.
Ini adalah kejadian yang saya miliki. Tindakan SQL kompleks diproses dalam bahasa sql dan akan berfungsi dengan baik, jika basisnya baik-baik saja.
Jika Anda mencoba menghubungkan database Anda ke lembar excel menggunakan Microsoft Query (via ODBC), Anda mendapatkan panduan konfigurasi yang memungkinkan Anda memilih database yang ingin Anda sambungkan. - aKzenT
Kesalahan ini lebih sering ditemukan di perangkat lunak pihak ke-3, jadi jangan pernah menggunakan titik di setiap nama apa pun di server sql.
Ada banyak karakter yang diizinkan dalam nama, tetapi, konvensi dan akal sehat membatasi penggunaan karakter khusus. '_' (garis bawah) adalah pemisah teraman dan terbukti mudah dibaca.
Kesepakatan yang sama: nama kunci asing tidak boleh mengandung titik.
Saya menemukan bahwa jika Anda perlu mengubah nama seperti itu maka Anda perlu tanda kurung untuk sp_rename
bekerja (karena ketika Anda mengganti nama kunci Asing Anda perlu menentukan skema).
Contoh:
sp_rename '[MySchema].[MyFKName.With.Dots]' 'NewFKName' 'OBJECT'
Jika Anda lupa tanda kurung, Anda mendapatkan kesalahan: 15225
Salah satu pemasok kami telah memilih untuk memperkenalkan nama skema: [System.Activities.DurableInstancing]. Itu rusak alat dataload kami, jadi kami sekarang memiliki pengembangan lebih lanjut untuk mengatasi keanehan mereka. Tapi jangan lakukan itu. Gunakan '-'.
-
ketika Anda dapat menggunakan garis bawah_
dan tidak harus menyertakan nama dalam tanda kurung sama sekali?