excel sql server error: Nama objek tidak valid

2

Saya mengakses prosedur tersimpan pada database Microsoft SQL Server 2005 dalam excel menggunakan

Select * 
from  [dbo].[fn_ph_by15minbyQueue] ('2013-09-01','2013-09-30','LocationCode')

dalam koneksi data, yang berfungsi dengan baik.
Saya membutuhkan kolom tambahan, jadi saya mengubah pernyataan itu menjadi

select *, 
(case right([Interval],2)
    when '15' then left([interval],len([Interval])-2)+'00'
    when '45' then left([interval],len([Interval])-2)+'30'
    else [interval]
    end) as interval_30
from [dbo].[fn_ph_by15minbyQueue] ('2013-09-01','2013-09-30','LocationCode')

yang berfungsi dengan benar di dalam SQL Server, tetapi ketika saya memasukkan kode itu ke dalam Teks Perintah, Excel melaporkan:

Nama objek tidak valid 'dbo.fn_ph_by15minbyQueue'

Apa yang saya lakukan salah?

Info
masukkan deskripsi gambar di sini
koneksi: String Koneksi:

Penyedia = SQLOLEDB.1; Keamanan Terpadu = SSPI; Persist Info Keamanan = Benar; Katalog Awal = BusinessUsers; Sumber Data = qadbs4784; Prosedur Penggunaan untuk Mempersiapkan = 1; Terjemahan Otomatis = Benar; Ukuran Paket = 4096; Workstation ID = XXXX; Penggunaan Enkripsi untuk Data = Salah; Beri tag dengan susunan kolom bila memungkinkan = Salah

SeanC
sumber
apakah Anda benar-benar perlu mengganti nama kolom sama sekali? jika tidak, cukup gunakan pilih * seperti sebelumnya. juga saat Anda mengedit fungsi Anda, apakah Anda menyetel 'no count on'? jika demikian, hapus. datapigtechnologies.com/blog/index.php/…
Frank Thomas
@ FrankThomas, dapatkah saya menetapkan tidak ada hitungan dari koneksi data excel? Penamaan kolom hanya untuk keterbacaan, tetapi menghapusnya tidak berpengaruh pada respons dari excel
SeanC
tidak, ini merupakan bagian dari skrip fungsi / prosedur. karena Anda menambahkan kolom ke output, Anda harus mengedit fungsi.
Frank Thomas
fungsi berfungsi dengan benar di SQL Server, tetapi jika saya memasukkannya ke dalam koneksi data excel, saya mendapatkan kesalahan. Manipulasi sebenarnya mengambil bidang waktu, dan dibulatkan ke setengah jam terdekat
SeanC
ya saya tahu. memiliki 'no count on' tidak memiliki dampak negatif pada ujung server, tetapi mencegah excel memproses hasilnya. juga, kita mungkin terpaku pada terminologi, tetapi koneksi dan perintah adalah dua hal yang berbeda, dan Anda tidak dapat menempatkan perintah dalam koneksi. koneksi mengatakan 'terhubung ke server x menggunakan database y, ini adalah kredensial saya' sedangkan perintah mengatakan 'berikan saya data ini dan gunakan koneksi ini untuk melakukannya'. bisa tolong posting fungsi, dan jelaskan bagaimana Anda menentukannya di excel. Gambar bernilai seribu kata.
Frank Thomas

Jawaban:

0

Coba tambahkan tanda kutip tunggal di sekitar nama bidang baru, interval_30.

(case right([Interval],2) when '15' then left([interval],len([Interval])-2)+'00' when '45' then left([interval],len([Interval])-2)+'30' else [interval] end) as 'interval_30'

B540Glenn
sumber