سؤال

إذا كنت بحاجة إلى نسخ إجراء مخزن (SP) من SQL Server إلى آخر لا حق انقر على ليرة سورية في SSMS وحدد النصي الإجراء المخزن كما > إنشاء > استعلام جديد نافذة المحرر.ثم تغيير الاتصال عن طريق النقر بالزر الأيمن على نافذة اختيار اتصال > تغيير اتصال...ثم اختيار الخادم الجديد و F5 لتشغيل خلق على الملقم الجديد.

لذا سؤالي هو "ما هو T-SQL جملة للاتصال SQL Server آخر ؟" لذا يمكنني فقط لصق هذا في الجزء العلوي من إنشاء البرنامج النصي F5 لتشغيل وأنها ستتحول إلى ملقم جديد وتشغيل إنشاء البرنامج النصي.

أثناء كتابة السؤال أدركت أنه إذا أعطيتك الأرض مرة أخرى إلى ما أحاول فعله أن كنت قد تأتي مع أسرع و أفضل طريقة من لإنجاز هذا.

هل كانت مفيدة؟

المحلول

أيضا, تأكد عند كتابة الاستعلام التي تنطوي على ملقم مرتبط قمت بتضمين الأقواس مثل هذا:

SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]

لقد وجدت أنه على الأقل على 2000/2005 [من] بين قوسين ضرورية ، على الأقل حول اسم الملقم.

نصائح أخرى

في Studio إدارة ملقم SQL بدوره على المساعدة SQLCMD mode من القائمة استعلام.ثم في الجزء العلوي من البرنامج النصي الخاص بك ، اكتب في الأمر أدناه

:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]

إذا كنت تتصل ملقمات متعددة ، تأكد من إدراج GO بين الاتصالات; وإلا T-SQL لن يعدموا على ملقم كنت أفكر أنه سوف.

تحديث:لربط آخر sql server تنفيذ عبارات sql ، المساعدة sqlcmd.ويتم هذا عادة في ملف دفعي.يمكنك الجمع بين هذا مع xmp_cmdshell إذا كنت ترغب في تنفيذ ذلك داخل إدارة studio.


طريقة واحدة هي أن تكوين ملقم مرتبط.ثم يمكنك إلحاق ملقم مرتبط و اسم قاعدة البيانات إلى اسم الجدول.(select * from linkedserver.قاعدة البيانات.dbo.TableName)

USE master
GO
EXEC sp_addlinkedserver 
    'SEATTLESales',
    N'SQL Server'
GO

إذا كان لي أن أعيد صياغة السؤال - هل من الممكن أن اختيار خادم سياق تنفيذ الاستعلام في DDL - الجواب هو لا.إلا في سياق قاعدة البيانات يمكن برمجيا المختار مع الاستخدام.(وكان قد انتقاؤه الخادم السياق خارجيا)

ملقم مرتبط و فتح الاستعلام يمكن أن تعطي الوصول إلى DDL ولكن تحتاج إلى كتابة التعليمات البرمجية الخاصة بك لتغليف كسلسلة - مما يجعل من الصعب تطوير/debug.

بالتناوب يمكنك اللجوء إلى خارجي السائق برنامج لاقط SQL الملفات لإرسالها إلى الخادم البعيد عن طريق فتح الاستعلام.ومع ذلك في معظم الحالات يمكنك الاتصال إلى الملقم مباشرة في 1st مكان لتقييم DDL.

كلما نحاول استرجاع أي بيانات من ملقم آخر نحن بحاجة خطوتين.

الخطوة الأولى:

-- Server one scalar variable
DECLARE @SERVER VARCHAR(MAX)
--Oracle is the server to which we want to connect
EXEC SP_ADDLINKEDSERVER @SERVER='ORACLE'

الخطوة الثانية:

--DBO is the owner name to know table owner name execute (SP_HELP TABLENAME)    
SELECT * INTO DESTINATION_TABLE_NAME 
FROM ORACLE.SOURCE_DATABASENAME.DBO.SOURCE_TABLE

إذا كنت تتصل ملقمات متعددة يجب عليك إضافة 'العودة' قبل التبديل خوادم أو البيانات sql الخاص بك سيتم تشغيل الملقم غير صحيح.

على سبيل المثال

:CONNECT SERVER1
Select * from Table
GO
enter code here
:CONNECT SERVER1
Select * from Table
GO

http://www.sqlmatters.com/Articles/Changing%20the%20SQL%20Server%20connection%20within%20an%20SSMS%20Query%20Windows%20using%20SQLCMD%20Mode.aspx

حاول إنشاء ملقم مرتبط (التي يمكنك القيام به مع sp_addlinkedserver) ثم باستخدام OPENQUERY

على محرك الأقراص C أنا أولا إنشاء ملف txt إلى إنشاء جدول جديد.يمكنك استخدام ما تريد من أي وقت مضى في هذا الملف النصي

في هذه الحالة ملف نصي يسمى "Bedrijf.txt"

المحتوى:

Print 'START(A) create table'

GO 1

If not EXISTS
(
    SELECT *
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'Bedrijf'
)
BEGIN
CREATE TABLE [dbo].[Bedrijf] (
[IDBedrijf] [varchar] (38)   NOT NULL ,
[logo] [varbinary] (max) NULL ,
[VolledigeHandelsnaam] [varchar] (100)  NULL 
) ON [PRIMARY]

حفظه

ثم إنشاء الأخرى ملف txt مع اسم "Bedrijf.الخفافيش" و امتداد bat.إنه المحتوى:

OSQL.EXE  -U Username -P Password -S IPaddress -i C:Bedrijf.txt -o C:Bedrijf.out -d myDatabaseName

حفظ ذلك من explorer انقر نقرا مزدوجا فوق تنفيذ

النتائج سيتم حفظها في ملف txt على محرك الأقراص C مع اسم "Bedrijf.خارج"

فإنه يدل على

1> 2> 3> START(A) create table

إذا سارت الامور بشكل جيد

هذا هو

إذا كان ذلك ممكنا ، تحقق من مباحث أمن الدولة (SQL Server تكامل الخدمات).أنا مجرد الحصول على قدمي الرطب مع هذا الدليل ، ولكن بالفعل am حلقات أكثر من 40+ خوادم وإعداد تعيث جميع أنواع الخراب ;)

محاولة PowerShell نوع مثل:

$cn = new-object system.data.SqlClient.SQLConnection("Data Source=server1;Initial Catalog=db1;User ID=user1;Password=password1");
$cmd = new-object system.data.sqlclient.sqlcommand("exec Proc1", $cn);
$cn.Open();
$cmd.CommandTimeout = 0
$cmd.ExecuteNonQuery()
$cn.Close();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top