একটি ডাটাবেস প্রকল্পে OPENQUERY এর সাথে একটি লিঙ্কযুক্ত সার্ভার ব্যবহার করা


10

আমার একটি এসকিউএল সার্ভার আছে ২০০৮ সালে একটি ডাটাবেস চলছে যা টিএফএসে ফেলে দিতে চাই। তাই আমি একটি ভিজ্যুয়াল স্টুডিও 2013 ডাটাবেস প্রকল্প ব্যবহার করেছি যেখানে আমি ডিবি আমদানি করেছি। একগুচ্ছ ত্রুটিগুলি স্থির করার পরে আমি কেবল একটি ত্রুটি রেখেই আটকেছি:

কোনও দৃশ্যে OPENQUERYকোনও লিঙ্কযুক্ত সার্ভার অ্যাক্সেস করতে ব্যবহার করা ডেভগুলি । সুতরাং আমি একটি ড্যাকপ্যাক আমদানি করেছি যাতে সঠিক ডাটাবেস রয়েছে Add Database Referenceএবং নীচের রেফারেন্স বিকল্পগুলি ব্যবহার করে এটি প্রকল্পে যুক্ত করেছি ।

ডাটাবেস রেফারেন্সের জন্য সেটিংস

প্রাথমিক স্ক্রিপ্ট সংস্করণ

এখানে আসল ভিউ তৈরির সংক্ষিপ্ত সংস্করণ রয়েছে:

CREATE VIEW dbo.vwStatus
AS
SELECT     StatusID, StatusName
FROM       OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

এটি নিম্নলিখিত ত্রুটির দিকে পরিচালিত করে:

ত্রুটি 136 এসকিউএল 71501: দেখুন: [ডিবিও] [

প্রথম প্রচেষ্টা

তাই আমি সার্ভারের নাম ভেরিয়েবল sertোকানোর চেষ্টা করেছি

FROM       OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

যা বাড়ে

ত্রুটি 176 এসকিউএল 46010: $ (লিংকড সার্ভার) এর নিকটে ভুল সিনট্যাক্স।

আরও চেষ্টা

আমি কিছুটা বেঁধে ফেলি এবং নিম্নলিখিতগুলি চেষ্টা করেছিলাম (উদ্ধৃত শনাক্তকারীদের সক্ষম হওয়া ছাড়া এবং ছাড়া):

FROM       OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([$(LinkedServer)], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([LinkedServer], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY("LinkedServer", 'SELECT * FROM [DB].[dbo].tbStatus') AS 

আমি সর্বদা একটি ত্রুটি পাচ্ছি।

আমি এখানে কী উপেক্ষা করছি তার আমার কোনও ধারণা নেই। আপনি কি? আপনার সময় জন্য ধন্যবাদ!

(দুঃখের সাথে আমি ভিজ্যুয়াল-স্টুডিও -2013 ট্যাগ যুক্ত করতে পারি না, তাই আমি ভিজ্যুয়াল-স্টুডিও ব্যবহার করেছি)

উত্তর:


9

আমি এটি কাজ করতে পরিচালিত করেছি:

আমি একটি নতুন ডাটাবেস প্রকল্প তৈরি করেছি master। সেখানে আমি একটি ফোল্ডার Server Objectএবং একটি ফাইল তৈরি করেছি LinkedServer.sql। এসকিউএল ফাইলটিতে আমি লিঙ্কযুক্ত সার্ভার যুক্ত করেছি:

GO
EXECUTE sp_addlinkedserver @server = N'LinkedServer', @srvproduct = N'sqlserver', @provider = N'SQLNCLI', @datasrc = N'LinkedServer.domain';

ডাটাবেস প্রকল্পটি masterআমার সমাধানে যুক্ত করার পরে এবং এটি আমার মূল ডাটাবেস প্রকল্পে উল্লেখ করার পরে , আমি প্রাথমিক বাক্য গঠন ব্যবহার করে প্রকল্পটি তৈরি করতে সক্ষম হয়েছি;

CREATE VIEW dbo.vwStatus
AS
SELECT     StatusID, StatusName
FROM       OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

সেখানে লিঙ্কড সার্ভারস.এসকিউএল ফাইলের সাথে একটি মাস্টার প্রকল্প থাকা সত্ত্বেও আমি এটি কাজ করতে পারি না
পরীক্ষা করুন

ভাল, আরও কিছু তথ্য না দিয়ে সহায়তা করা শক্ত। সম্ভবত আরও একটি প্রশ্ন করা ভাল। আপনার সমাধানে আপনার মাস্টার প্রকল্পটি উল্লেখ করা গুরুত্বপূর্ণ। অন্যথায় এটি বর্ণনা করা ঠিক যেমন আমার জন্য কাজ করে।
চেকে

আপনার সমাধানের মধ্যে - আপনার কি লিঙ্কড সার্ভার ডিবিএর সাথে একটি ড্যাকপ্যাক (গুলি) বা প্রকল্প (গুলি) আছে?
মার্টিন মিজার

হাই, আমি মনে করতে পারি না, তবে আমি দ্বিতীয় অনুচ্ছেদে লিখেছিলাম, আমি ড্যাকপ্যাক ব্যবহার করেছি। তবে চূড়ান্ত সমাধানের জন্য আমি মাস্টার ডিবির জন্য একটি ডাটাবেস প্রকল্পটি উল্লেখ করেছি।
চক

1
দ্রষ্টব্য আপনাকে অবশ্যই নিশ্চিত করতে হবে যে আপনার 'লিংকড সার্ভার.এসকিউএল' ফাইলটিতে বিল্ড অ্যাকশনটি 'বিল্ড' এ সেট করা আছে। বিরক্তিকরভাবে ভিএস লিঙ্কযুক্ত সার্ভারটিকে প্রাক-স্থাপনার স্ক্রিপ্ট থেকে স্বীকৃতি দেবে বলে মনে হয় না, বা এগুলি প্রয়োজনীয় হবে না।
তারান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.