Konuyu görüntüle
IUCODERS FORUM > Programlama > Veritabanları > SQL Server Stored Procedure yardım
Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
23.04.2008-06:46 #43200
İlk defa SQL Server açıyorum. İlk açılınca okuldan hatırladığım kadarıyla bağlantı sql server authentication yapılacak login de sa olacak diye biliyorum. Bunu yapınca nereye stored procedure yazıp çalıştırabileceğimi hatırlıyorum.
Fakat bağlanmıyor şöyle bir hata veriyor the user(sa) is not associated with a trusted SQL server connection . Herhalde bilmediğim bir şey yapıyorum.
Ben de windows authentication ile bağlantı yaptım stored procedure oluşturdum fakat bu seferde çalıştırabilmek için Tools da SQl Query analizer yok anlayamadım bu işi.
Bunların farkları nedir nasıl çalıştırabilirim stored procedure, açıklayabilecek olan olursa çok sevinirim. Hiç bir şey anlayamadım ve soğumaya başladım.sad
Bu arada SQL Server 2005 Standart Edition kullanıyorum





Öldüremiyorsan, yaralama.
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
23.04.2008-09:14 #43201
sql server management studio yu kurduktan sonra veritabanına sağ yık yapıp new query dedikten sonra oraya kodunu yazabilirsin.





N/A
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
23.04.2008-11:30 #43206
Selamlar,
Baska arkadaslarinda ayni sekilde sorunu olabilecegini dusundugum icin detayli anlatayim:


Oncelikle SA Baglantı sorununuz için,okuldaki makineler mixed mde authentication ile calisiyorlardir, ancak sizin evdeki konfigurasyonunuz single mode-windows authentication dir default olarak bence.

Bunu duzeltmek icin;
1- Gene management Studio yu kullanarak windows authentication ile management studio yu acin.
2- Soldaki object explorer agacinda(gorunmuyorsa view sekmesi altinda object explorer i acin) en ust dugum olan server adiniz uzerine gelin. Sag tusla properties i ne girin.
3- Properties icinde soldan security sekmesini secin.
4- Security icinde Authentication Mode olarak Sql Server and Windows Authentication radio buttonu secili hale getirin.
5- Tamam diyerek properties penceresini kapatin.
6- gene object explorer icinde goruntulenen (database,security, Serer objects.. seklindeki) listeden securitynin + sina basarak genisletin logins in + si ile genisletin acilan kullanici listesinde sa yi secin sag tusla properties ine girin.
7- Properties icinde en altta bulunan status kismana girip enabled olup olmadigina bakin, degilse enabled yapin.
8- Tamam diyerek pencereyi kapatin.
9- Management studio yu kosesinden kapatin.
10- Baslat calistira services.msc yazarak servislere girin. Sql server services ini bulun durdurun ve yeniden baslatin.


Store procedure ve Uery Analizer sorununuz icin:
1- Management Studio yu acin. Bakin bakalim sa ile baglanabiliyor musunuz:) Authentication ode combobox i icinden sql server authentication i secmeyi unutmayin:)
2- acilan management studio icinde en yukarida file ... Help e kadar olan menu barının sag tarafında bos vir yere sag tusla basın ve acılan menuden standarrdı secin. Boylece yeni eklenen arac cubugunu n en solunda New Query i goreceksiniz. Ona tıklayarak query lerinizi yazabilirsiniz. Buna view-Toolbars-standart seklinde de ulasabilirsiniz.
3- burda Sp testi yapabilirsiniz.
4- yeni sp icin database inizin programability secenegi altindan store procedures dugumune gelip sag tusla new store procedure diyebilirsiniz.

Kolay gelsin, iyi calismalar.





Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
23.04.2008-16:41 #43232
Hocam öncelikle cevabınız için teşekkürler. Dediğiniz harfiyen yaptım servislerde tam olarak Sql server services adında bir hizmet yoktu o yüzden ben de Sql server integration service ve Sql server(MSSQL) hizmetlerini durdurup yeniden başlattım (neden bunları seçtim bilmiyorum biggrin) sa ile bağlanmayı denedim bu seferki hata şu
 
A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - Borunun diğer ucunda işlem yok.) (Microsoft SQL Server, Error: 233)
yine bağlanmadı...
Bir de acaba windows authentication veya Sql server authentication ile bağlanmamızda ne fark var?





Öldüremiyorsan, yaralama.
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
23.04.2008-20:28 #43244
Şimid bunun gözüken bu komik hatadan dolayı nedenini tam olarak çözmek biraz zor görünüyor:) Ya bu nasıl bir hatadır yaa, zaman zaman bende rastladım bu hataya, geçenlerde Özgür le gene gülmüştük, "Borunun diğer ucunda işlem yok". MS yerelleştirme merkezine mail atacağım, İrlanda'ya:) Ya sakata gelmesin b hatayı alanlar daha açık ve net bir açıklama yazın diyeceğim:)

Neyse artık, işin şakası bir yana senin sql server in remote erişime kapalı olabilir. Sonu olarak Managemenet Studio da remote dan Sql Server çekirdeğine erişen bir uygulama. Buna izin vermek için;

1- Management Studio yu acin.
2- Object explorer uzerinde en ust dugum olan server adınıza sag tıklayıp properties e girin.
3- connections sekmesini secin ve buradaki Allow remote connections to this server seceneginin tikli olmasını saglayın. Tamam deyin. management studio yu kapatın.
4- gecen sevfer gibi baslat-> calistir a services.msc yazarak acilan servislerden Sql Server8MSSQL) i durdurup yeniden baslatin ve baglanmayi deneyin.

Not: Benim bir nceki mesajımda bahsettigim Sql Server Services aslında Sql Server (MSSQL) yazan servis zaten. Sizde de olmaması mumkun degildi o yuzden:)

Kolay gelsin.





Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
23.04.2008-21:09 #43247
Hocam şimdi bilmiyom bu hatalar sadece bende mi oluyor baktım uzaktan erişime açıktı.
Ben yine de Sql Server(MSSQL) tekrar başlattım bağlanmaya tekrar çalıştım. Bu sefer borudan kurtulduk fakat nedense Cannot connect to AUZUN-PC Login failed for user 'sa' confused (ne alaka ise sanki dışarıdan bir bilgisayara bağlanmaya çalışıyor) diyor.





Öldüremiyorsan, yaralama.
Yazar
timur


avatar
İstanbul
Kayıt: 19.01.2006
23.04.2008-21:27 #43248
Windows kullanıcısı ile girdikten sonra Security->Logins kısmında sa kullanıcına bakarak aktif olup olmadığını kontrol edin(sa kullanıcısına sağ tıklayıp properties dedikten sonra status kısmına tıklayın. Orada kullanıcının Enable olduğuna emin olun). Eğer aktifse de şifresini doğru yazdığınıza emin olun.

Kolay gelsin...





Hayat varsa umut vard?r...
www.timureroglu.com

Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
23.04.2008-21:44 #43251
Başardım.dancing
İlgileriniz için teşekkürler.





Öldüremiyorsan, yaralama.
Yazar
watthana


avatar
uzayli
Kayıt: 02.02.2007
30.04.2008-19:47 #43756
Selam Herkese başka başlık açmayayım dedim de...
sorun şöle bişey...
4 alandan olusan bir tabloya veri ekleyen bir procedure hazırladım...

CREATE PROCEDURE ekle @adı char,@soyadı char,@maası money,@yası int
AS
begin
insert into isci
values(@adı,@soyadı,@maası,@yası)
end
GO

bu sekılde procedure olusturuldu...
Sorgu kısmına gecınce...4 parametre ıle cagırmam ıcab edıyor...

EXEC ekle (?????) ==>>> asıl sorun bu işte

parametrelerı nasıl yazcuz bılen var mı aceb yawuu..!!!!
roseroserose





ASIKSAN YARE,
ALDANMA AGYARE...

Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
30.04.2008-20:02 #43759
şöyle denedin mi
EXEC ekle adı,soyadı,maas,yası

bi de burası sanki şöyle olması gerekiyor
insert into isci (adı,soyadı,maası,yası) --tablodaki değerler
values(@adı,@soyadı,@maası,@yası)






Öldüremiyorsan, yaralama.
Yazar
iemre


avatar
Anadolu
Kayıt: 26.05.2007
30.04.2008-20:02 #43760
Süper bi video buldum.Dat.Net ile store prosedürün birlikte kullanımını anlatıyor.Sanırım hem sql de nasıl kullanıldığını hemde Dat.Nette nasıl kullanıldığını çok kolay anlarsınız.5 MB kadar bişey.Hepinize kolay gelsin.

http://www.4shared.com/file/45927750/3fa87bf9/Store_P





More than one
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
30.04.2008-20:53 #43764
watthana yazdi
 
Selam Herkese başka başlık açmayayım dedim de...
sorun şöle bişey...
4 alandan olusan bir tabloya veri ekleyen bir procedure hazırladım...

CREATE PROCEDURE ekle @adı char,@soyadı char,@maası money,@yası int
AS
begin
insert into isci
values(@adı,@soyadı,@maası,@yası)
end
GO

bu sekılde procedure olusturuldu...
Sorgu kısmına gecınce...4 parametre ıle cagırmam ıcab edıyor...

EXEC ekle (?????) ==>>> asıl sorun bu işte

parametrelerı nasıl yazcuz bılen var mı aceb yawuu..!!!!
roseroserose




Oncelikle store procedure unde pamatrelerin char, varchar, nvarchar gibi ise bunlarin uzunlugunuda belirtmen gerekir dogru calismasi icin, ornegin char(50) gibi.

Onun haricinde procdeur cagirimi icin

EXEC ekle 'Tarik', 'Kranda', 100 vs. seklinde parametre geciyorsun.
OUTPUT parametresi var ise procedurunde bununda arkasina OUTPUT yazarak gonderebilirsin.

Ornegin:
Procedure olarak

CREATE PROCEDURE [dbo].[sp_InsertUser]
@ID int OUTPUT,
@nameOfUser nvarchar(50)
AS
BEGIN
INSERT INTO TBL_USERS(UserName) VALUES (@nameOfUser)
SET @ID = SCOPE_IDENTITY();
END

DECLARE @InsertedUserID int

EXEC sp_InsertUser @InsertedUserID OUTPUT, 'Tarık'

SELECT @InsertedUserID

Seklinde.

Kolay gelsin.





Yazar
auzunun


avatar
Bursa
Kayıt: 15.01.2006
30.04.2008-21:32 #43771
tarikkranda yazdi
 

SET @ID = SCOPE_IDENTITY();

Hocam şu ne demek ben bir türlü anlayamadım. insert örneklerinde hep var herhalde kaydı alıp tabloya atmaya yarayan bi fonksiyon ID nin işlevini anlayamadım. Bir de çalıştırma kısmını anlatabilirseniz sevinirim neden sadece EXEC yeterli olmuyor diğerleri ne işe yarar
 
DECLARE @InsertedUserID int SELECT @InsertedUserID






Öldüremiyorsan, yaralama.
Yazar
tarikkranda


avatar

Kayıt: 07.01.2006
30.04.2008-21:41 #43774
auzunun yazdi
 
tarikkranda yazdi
 

SET @ID = SCOPE_IDENTITY();

Hocam şu ne demek ben bir türlü anlayamadım. insert örneklerinde hep var herhalde kaydı alıp tabloya atmaya yarayan bi fonksiyon ID nin işlevini anlayamadım. Bir de çalıştırma kısmını anlatabilirseniz sevinirim neden sadece EXEC yeterli olmuyor diğerleri ne işe yarar
 
DECLARE @InsertedUserID int SELECT @InsertedUserID


Şimdi Burda veritabaninda TBL_USERS tablosunun 2 adet alani var diyelim birisi id numarasi, digeri kullanici adi. Biliyorsunuzki bu id alanlari genellikle kendi kendine 1 er 1 er artan identity alanlaridir. Dolayisilay Insert Into yaparken bu alana veriyi siz giremezsiniz, diger alanlara veri girersiniz o deger bir oncek kaydin 1 fazlasi olarak otomatik doldurulur.

Bu tip durumlarda, siz yeni bir kullanici bilgisini db ye insert ettiginizde, bunun id numarasi isinize yarayabilir. ACaba 1 artarak otomatik olarak olusturulan bu deger kactir sorusunun cevabini gonduruyor bize SCOPE_IDENTITY() fonksyonu. @@Identity degiskeni de ayni deger icin kullanilir. Yada INSERT INTO ifadelerindeki OUTPUT inserted.ID seklinde de ulasilabilir. Sonucta ben bu procedure de veri tabanina yeni bir kullanici sokuyorum, ve bu yeni yaratilan kullaniciya otomatik olarak bir onceki kaydin ID si 1 arttirilarak verilen numarayi geri almak istiyorum. Acaba kac numara verildi diye?

Bunun icin bu degeri SCOPE_IDENTITY() ile alip, SET @ID = SCOPE_IDENTITY(); ile @ID degiskenine depoluyorum.

Bunun haricinde EXEC satirinda OUTPUT yazmamin nedeni disarida DECLARE ile tanimladigim bir degiskeni fonksiyonun icine referans olarak gonderip, fonksiyon icinde degerini almasini sagliyorum yani burda @ID degiskeni disaridan gelmis demektir. Ben de onun icini doldurulmak icin gonderildi diye bildirmek icin yanina OUTPUT yaziyorum. ICeride set ettigim icin disaridan otomatik verilmis degeri okuyabiliyorum.

Umarim aciklayici olmustur.





Yazar
watthana


avatar
uzayli
Kayıt: 02.02.2007
30.04.2008-23:37 #43791
Teşekkürler....

Aynen Tarık hocanın dediği gibi procedure de boyutlarını belirtmek lazımmış - boyut belirtmeden denedim sadece ilk harfi alıyor...- ve exec kısmında da belirttiği gibi char türü olanlar ' ' icinde,int,money vs direk yazılıyor...

iyi akşamlar...

roseroserose





ASIKSAN YARE,
ALDANMA AGYARE...

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb