2011-11-18 22 views
5

belirtmeden sayıl işlevi gerçekleştirmek Ben C# bu işlevi çağırmak zorunda, Şimdi sözdizimi dbo.Function(arg)SQL sunucusu - db adını

kullanarak yönetim stüdyosundan çağırmak mümkün olduğum bir kullanıcı tanımlı SQL fonksiyonu var ı don eğer **dbname**.dbo.Function(arg) belirtme SQL sunucusunun bu kullanıcı tanımlı işlevi bulamadığı bir hata alıyorum. Bunu dbname belirtmeden nasıl çözebilirim? Zaten belirten bir bağlantı dizesi kullanarak sunucuya bağlanmak "initial catalog = dbname"


Ben bunu koymak zorunda (SQL sunucusu 2005 veya 2008 kullanarak ya) bu nokta :-) imkan verdiği davranışı yeniden olamaz gibi görünüyor beklemeye soru

+1

C# kodunu ve tam istisnayı gösterir misiniz? –

+2

Uygulamanız tarafından kullanılan girişe işlev üzerinde 'EXEC' izinlerini vermeniz gerekebilir. –

+0

@MartinSmith Windows Authetication'ı hem yönetim stüdyosunda (hem de çalıştığı yerde) ve C# kodunda kullanırım. Ben de dbname (örneğin, SELECT \t DATEPART (YEAR, Activitylogs.Datastamp) AS YEAR_VALUE, dbname.dbo.ISOweek (Activitylogs.Datastamp) ... kodu eklemek eklediğim gibi bir "SqlCommand" ile Çalışıyor – Ghita

cevap

2

Kişisel bağlantı dizesi başlangıçta kullanmak veritabanını belirtmek gerekir böyle görünebilir:. Bu olmadan

var cn = new SqlConnection(
    "SERVER=SomeServer;DATABASE=SomeDb;Integrated Security=SSPI;" 
); 

, muhtemelen master veritabanına dökülüyor olduğunuz i Niçin işlev ismini tam olarak nitelendirmeniz gerekiyor.