sql server nama objek tidak valid - tetapi tabel tercantum dalam daftar tabel SSMS

336

Saya mencoba membuat Stored Procedureuntuk database yang baru dibuat. Namun SSMSintellisense tidak mengenali lebih dari setengah dari tabel yang telah dibuat.

Misalnya, sementara di kolom sebelah kiri di bawah tabel saya memiliki tabel dbo.Room, ketika saya mengetik " dbo." di jendela permintaan baru, tabel itu tidak terdaftar, bahkan hanya 17 dari 37 tabel yang terdaftar.

Saya tidak bisa melihat perbedaan antara tabel yang terdaftar dengan intellisense dan yang tidak. Jika saya mengetik dbo.Room secara manual, ini digarisbawahi, dengan kesalahan

Nama Objek tidak valid 'dbo.Room' ..

Apakah saya melewatkan sesuatu dalam mengatur tabel?

PEMBARUAN: Saya telah mencoba menyegarkan daftar tabel (beberapa kali)

Richbits
sumber
11
Jawaban yang berfungsi: [DatabaseName].[Schema].[TableName] SO: Nama Objek Tidak Sah sql
Ivan Chau

Jawaban:

703

Mencoba:

Edit-> IntelliSense->Refresh Local Cache

Ini harus menyegarkan data yang di-cache oleh Intellisense untuk memberikan dukungan typeahead dan deteksi kesalahan pra-eksekusi.

CATATAN: Kursor Anda harus ada di editor kueri agar menu IntelliSense dapat terlihat.

Adam Robinson
sumber
8
Apakah Intellisense / SSMS menyegarkan sendiri secara berkala? Atau haruskah ini selalu menjadi proses manual? (Aku punya saya duga berdasarkan SSMS pada tahun 2005, tapi selalu bisa berharap.)
Philip Kelley
37
sulit dipercaya bahwa pada tahun 2012 Anda perlu melakukan ini. Tidak bisakah mereka memperbarui Intellisense setiap beberapa detik secara otomatis?
Matthew Lock
6
Itu mungkin memerlukan memukul database dan menarik definisi tabel / tampilan setiap beberapa detik.
jinglesthula
8
CATATAN: Kursor Anda harus ada di editor kueri agar menu IntelliSense dapat terlihat.
bradlis7
5
@jinglesthula: Itu akan menyelamatkan saya mengenai server database!
Paul
80

Ctrl+ Shift+ Rmenyegarkan intellisense di studio manajemen 2008 juga.

Zielyn
sumber
Saya tidak memiliki fitur ini ... ketika saya menekan ctrl + shift + R tidak ada perubahan
Ibrahim Amer
4
@IbrahimAmer Kursor Anda harus ada di editor kueri agar opsi menu Intellisense tersedia. Jika opsi menu intellisense tidak tersedia, pintasan tidak akan melakukan apa pun.
Rachael
Ini juga berfungsi untuk T-SQL di SQL Server Management Studio 2014
Vahid Amiri
44

Pastikan bahwa DB yang dipilih adalah tempat di mana tabel berada. Saya menjalankan Script Master. Dalam kasus saya, saya harus beralih ke hr_db.

masukkan deskripsi gambar di sini

Tapi Rookie kesalahan, bisa membantu seseorang.

Daniel Segura
sumber
4
Saya tidak yakin itu adalah kesalahan pemula untuk jujur, karena setiap kali Anda menghubungkan kembali server itu untuk beberapa alasan beralih ke "master" tanpa alasan yang jelas. :)
Chris Rae
Jika itu terjadi dan kueri tidak sepenuhnya memenuhi syarat nama tabel, kode tidak akan dijalankan. Saya percaya OP menggambarkan deteksi kesalahan positif palsu ketika masalah yang Anda uraikan bukan merupakan faktor penyebab. (Tentu saja, saya sudah mengesampingkan kemungkinan ketika saya pergi mencari dan berakhir di sini.)
Dodecaphone
Persis masalah saya. Tidak ada indikasi dari SMS bahwa itu mengubah konteks basis data, atau petunjuk lainnya.
Daniel Black
1
@ChrisRae: Itu karena masterditetapkan sebagai basis data default untuk login pengguna Anda. Cukup ubah penggunaan itu sp_defaultdbke basis data lain untuk memilih basis data lain dalam SSMS saat Anda masuk. (Dapat juga diatur dalam SSMS oleh Security > Logins > your user login > Properties > Default database)
AxD
36

setelah Anda membuat objek SQL Server baru, objek Anda yang baru dibuat tidak bisa diperbarui di Cache lokal IntelliSence dan karena ini, itu menunjukkan garis merah di bawah objek itu. Jadi, Anda hanya perlu menyegarkan SSMS IntelliSence Local Cache dan setelah Anda menyegarkannya, IntelliSencesecara otomatis akan menambahkan objek yang baru dibuat dalam cache dan garis merah akan hilang. coba ini

Edit -> IntelliSense -> Refresh Local Cache atau Ctrl+ Shift+R

masukkan deskripsi gambar di sini

Nagaraj S
sumber
1
Saya tidak memiliki fitur ini ... ketika saya menekan ctrl + shift + R tidak ada perubahan
Ibrahim Amer
4
@IbrahimAmer Kursor Anda harus ada di editor kueri agar opsi menu Intellisense tersedia. Jika opsi menu intellisense tidak tersedia, pintasan tidak akan melakukan apa pun.
Rachael
18

Dalam kasus saya, cache IntelliSense adalah daftar informasi objek untuk database yang sama sekali berbeda. Jika saya mengklik tombol "Permintaan Baru" di SSMS, itu akan membuka permintaan ke katalog default saya di server dan editor permintaan itu akan selalu hanya menggunakan database itu. Menyegarkan cache tidak mengubah apa pun. Restart SSMS tidak mengubah apa pun. Mengubah database tidak mengubah apa pun.

Saya akhirnya membuat kueri dengan mengklik kanan pada database yang sebenarnya ingin saya gunakan dan memilih "Permintaan Baru" dari menu konteks itu. Sekarang SSMS menggunakan objek yang benar untuk IntelliSense.

Bit Bacon
sumber
3
Ini juga kasus saya. Terima kasih telah berbagi.
Behrooz Karjoo
1
GUNAKAN datbaseName GO sebelum kueri juga berfungsi dalam menyiapkan konteks
Behrooz Karjoo
@BehroozKarjoo Ya, saya mencobanya. Tampaknya tidak selalu berhasil. Jika saya bisa mereproduksinya, saya akan meletakkannya di Microsoft Connect atau sesuatu. Saya yakin mereka akan menandainya sebagai WONTFIX atau sesuatu yang sama menjengkelkannya, tetapi saya akan melaporkannya.
Bacon Bits
Bekerja dengan sempurna! Terima kasih! :)
Sean Stayns
Mulai ulang SSMS dan klik kanan permintaan baru berhasil untuk saya.
Hitsa
10

Apakah Anda yakin bahwa tabel tersebut ada?

Sudahkah Anda menyegarkan tampilan tabel di Object Explorer? Ini dapat dilakukan dengan mengklik kanan folder "tabel" dan menekan F5tombol.

Anda mungkin juga perlu menjalankan kembali cache Intellisense.

Ini dapat dilakukan dengan mengikuti rute menu: Edit -> IntelliSense -> Refresh Cache Lokal

John Sansom
sumber
7

Solusinya adalah:

  • Klik menu Permintaan,
  • lalu klik 'Ubah Database'.
  • Pilih nama database yang sesuai.

Itu dia.

Tono FRL
sumber
6

Masalah yang sama dengan saya ketika saya menggunakan masalah sintaks ini diselesaikan.

Sintaksis:

Use [YourDatabaseName]
Your Query Here

sumber
4

Bahkan setelah menginstal SP3 ke SQL Server 2008 Enterprise ini masih merupakan "masalah." Ctrl+ Shift+ RSeperti orang telah pepatah memecahkan masalah ini bagi saya.

demmith
sumber
Saya tidak memiliki fitur ini ... ketika saya menekan ctrl + shift + R tidak ada perubahan
Ibrahim Amer
@IbrahimAmer Kursor Anda harus ada di editor kueri agar opsi menu Intellisense tersedia. Jika opsi menu intellisense tidak tersedia, pintasan tidak akan melakukan apa pun.
Rachael
3

Diselesaikan untuk SSMS 2016.

Punya masalah serupa, tetapi Intellisense tidak ada di menu Edit.

Apa yang tampaknya memperbaikinya adalah menghidupkan dan mematikan Intellisens, klik kanan pada editor SQL dan klik 'Intellisense Enabled'. Klik kanan lagi pada 'Intellisense Enabled' untuk menyalakannya kembali. Ctr Q, saya juga melakukan ini.

Ini memecahkan masalah, dan saya juga tahu Intellisense pada menu Edit.

Eric Yeoman
sumber
2

Saya hanya perlu menutup SMS dan membukanya kembali. Saya mencoba Segarkan Cache Lokal dan itu tidak berhasil.

siluman
sumber
1

apakah Anda mencoba: klik kanan database, dan klik "segarkan"

KM.
sumber
Ya, saya sudah mencobanya, saya yakin itu ada di sana, saya dapat menambahkan catatan dan memodifikasi dll. Hanya melakukan Select * dari dbo.Room dan sementara saya masih memiliki garis bawah itu menghasilkan isi dari tabel. Saya akan mencoba reboot.
Richbits
1

Saya menyadari pertanyaan ini sudah dijawab, namun saya punya solusi berbeda:

Jika Anda menulis skrip tempat Anda menjatuhkan tabel tanpa membuatnya kembali, tabel tersebut akan ditampilkan sebagai hilang jika Anda mencoba merujuknya nanti.

Catatan: Ini tidak akan terjadi dengan skrip yang terus-menerus berjalan, tetapi kadang-kadang lebih mudah untuk memiliki skrip dengan permintaan untuk reerence daripada mengetiknya setiap kali.

Troy Loberger
sumber
0

Saya mengalami masalah dengan: ODBC dan SQL-Server-Authentication di ODBC dan Firedac-Connection

Solusi: Saya harus mengatur Param MetaDefSchema menjadi nama pengguna sqlserver: FDConnection1.Params.AddPair ('MetaDefSchema', self.FDConnection1.Params.UserName);

The wikidoc sais: MetaDefSchema = Nama skema default. Kode waktu Desain >> tidak termasuk << !! nama skema dari objek SQL-Server-Authenticatoinname jika sama dengan MetaDefSchema.

tanpa pengaturan, pembuat kode otomatis menciptakan: dbname.username.tablename -> nama objek yang tidak valid

Dengan mengatur MetaDefSchema ke sqlserver-username: dbname.tablename -> works!

Lihat juga embarcadero-doc di: http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)

Semoga ini bisa membantu orang lain ..

salam, Lutz

Lutz
sumber
0

Di studio data biru tekan "cmd + shift + p" dan ketik "intellisense", maka Anda akan melihat opsi untuk menyegarkan cache intellisense.

Hei kau
sumber
0

Jangan lupa untuk membuat migrasi Anda setelah menulis model

mgPePe
sumber