Saya perlu memecahkan masalah yang saya alami, dan saya butuh bantuan untuk memahami bagaimana sp_msforeachdb bekerja untuk mengatasi masalah saya.
Apa yang terjadi adalah setiap kali saya menjalankan sp_msforeachdb, saya mendapatkan kesalahan Msg 102, Level 15, State 1, Incorrect syntax near '61'
Contoh kode saya adalah sebagai berikut:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
Namun, tidak masalah kueri apa yang saya miliki sebagai parameter untuk sp_msforeachdb. Setiap kali saya mendapatkan kesalahan yang sama. Saya memang memiliki database yang dimulai dengan '61s1d', sehingga membuat saya berpikir itu memiliki masalah dengan nama DB, tapi jujur saya tidak tahu apa yang terjadi di balik layar pada sp_msforeachdb.
Hal-hal yang perlu diperhatikan.
- Ini adalah satu-satunya basis data yang dimulai dengan angka
- Saya dapat mencoba menggunakan kode seperti "Jika database seperti '% 61%' jangan lakukan ......", tetapi masih kesalahan yang sama.
- Saya tidak dapat menguji mengubah nama database - terlalu banyak hal yang terhubung dengannya.
- Jika saya membuat tes db yang dimulai dengan '51', maka saya juga mendapatkan kesalahan untuk database itu
Bagaimana saya bisa mengatasi ini?
sumber
Tidak setuju dengan apa pun yang dikatakan @Kenneth, saya harus menunjukkan bahwa kesalahan yang Anda temui tidak ada hubungannya dengan
sp_MSForEachDB
. Hal ini disebabkan oleh bagaimana Database itu dinamai: dimulai dengan angka. Aturan untuk penamaan objek (bukan hanya Database) dirinci di halaman MSDN untuk Pengidentifikasi Database . Jika Anda mengikuti "Aturan untuk Identifikasi Reguler" maka Anda tidak perlu menyertakan nama-nama itu dalam tanda kurung atau tanda kutip ganda. Tetapi nama-nama yang berada di luar aturan-aturan itu harus dilampirkan (selalu).sumber