Forum

Linked Server MySQL...
 
Bildirimler
Hepsini Temizle

Linked Server MySQL Problemi [query is too long. Maximum length is 8000.]

7 Yazılar
1 Üyeler
0 Reactions
1,303 Görüntüleme
(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Merhaba Arkadaşlar,

 Linked Server üzerinden MySQL e bağlanarak bazı verileri MSSQL e çekmem gerekiyor. Bunun için dinamik bir sorgu hazırlayıp bunu mysql e göndermem gerekiyor ancak sorgudaki karakter sınırı 8000 den fazla olduğu için sorguyu mysql e iletemiyorum. Ortaya çıkan dinamik sorguyu mysql üzerinden çalıştırdığımda sorunsuz şekilde çalıştığını görüyorum. Linked Server üzerinden göndermek istediğim zaman aşağıdaki hatayı almaktayım. Bu problemi aşmanın bir yolu var mı acaba ?

 

 Msg 103, Level 15, State 1, Line 1

The character string that starts with 'Sorgu cümlesi' is too long. Maximum length is 8000.

 
Gönderildi : 23/04/2015 14:05

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Merhaba 

Hazırlanacak olan sorguya bir değişken atayın, bu değişkenin veritipi varchar(max) olsun. Daha sonra bu Set @degisken 'sql cümlesi' girin, ardından execute ile ile değişkeni çalıştırın. 

 

Merhaba Yavuz Bey,

 Bende Tam o şekilde yapıyorum aslında  sorguyu aşağıda görebilirsiniz.

 

DECLARE @ID NVARCHAR(MAX),@Q NVARCHAR(MAX),@Q_FULL NVARCHAR(MAX)

SET @ID=(SELECT '/'+ STUFF((SELECT '/'+id+'/,' FROM ratings

FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,''))

SET @ID=REPLACE(@ID,'/','''''')

SET @Q_FULL=N'SELECT * from ratings where id not in('+@ID+')'

SET @Q='SELECT * FROM OPENQUERY(MYSQL_LVZ,'''+ @Q_FULL +''')'

EXEC (@Q_FULL) 

 
Gönderildi : 23/04/2015 14:31

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Son satırdaki exec i n sonuna linked server adını yazıp dener misiniz

EXECUTE (@Q_FULL) at linked_server_adi 

 

Merhaba Yavuz Bey,

 

Söylediğinizi yapınca düzeldi. Çok Teşekkürler. 

 
Gönderildi : 24/04/2015 14:30

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Son satırdaki exec i n sonuna linked server adını yazıp dener misiniz

EXECUTE (@Q_FULL) at linked_server_adi 

 

Merhaba Yavuz Bey,

 

Söylediğiniz şekilde yaptığım zaman bir sıkıntı yok ancak bu sorgu sonucunu herhangi bir tabloya yazdırmak istediğim zaman aşağıdaki hatayı almaktayım. Acaba bunun bir çözümü var mıdır ?

 

OLE DB provider "MSDASQL" for linked server "MYSQL" returned message "[MySQL][ODBC 5.3(w) Driver]Optional feature not supported".

Msg 7391, Level 16, State 2, Procedure p_Ratings_Select, Line 14

The operation could not be performed because OLE DB provider "MSDASQL" for linked server "MYSQL" was unable to begin a distributed transaction. 

 
Gönderildi : 24/04/2015 15:17

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Insert sorgusunu yazar mısınız buraya

 

DECLARE @ID NVARCHAR(MAX),@Q NVARCHAR(MAX),@Q_FULL NVARCHAR(MAX)

SET @ID=(SELECT '/'+ STUFF((SELECT '/'+id+'/,' FROM ratings

FOR XML PATH(''),TYPE).value('.','NVARCHAR(MAX)'),1,1,''))

SET @ID=REPLACE(@ID,'/','''')

SET @Q_FULL=N'SELECT id,time,user_id,internal_id,fullname,email,company,qualification,politeness,comment,ip,chat_id from db.ratings where id not in('+@ID+')'

SET @Q_FULL=REPLACE(@Q_FULL,''',)',''')')

INSERT INTO [dbo].[ratings]

           ([id]

           ,[time]

           ,[user_id]

           ,[internal_id]

           ,[fullname]

           ,[email]

           ,[company]

           ,[qualification]

           ,[politeness]

           ,[comment]

           ,[ip]

           ,[chat_id])

     

EXEC (@Q_FULL) at MYSQL 

 
Gönderildi : 24/04/2015 17:00

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

N'Select sorgusunda sorun vardır, insert edilen alan sayısı aynı where kısmını kontrol edin

 

Select Sorgusunu insert dışında kullandığım zaman sorunsuz bir şekilde select ediyor. Alan sayılarına baktığım zaman da aynı görünüyor. Çok ilginç 

 
Gönderildi : 24/04/2015 17:34

(@BurakSavaskan)
Gönderiler: 17
Eminent Member
Konu başlatıcı
 

Where kısmındaki + + lı kısmı farklı bir şekilde kullanabilir misiniz, burası sorun çıkartıyor olabilir

 

komple where i kaldırarak denedim yine aynı hatayı alıyorum. sanırım mysql üzerinden bir ayar yapmam gerekiyor . araştırmaya devam ediyorum. Çözümünü bulursam burada bildireceğim . 

 
Gönderildi : 24/04/2015 17:57

Paylaş: