PDA

View Full Version : ** فوری * * خواندن اطلاعات از دیتابیس محلی و ارسال به وب



modern_amin
یک شنبه 05 مرداد 1393, 11:42 صبح
سلام دوستان
مشکلی خوردم که باید امروز حتما حلش کنم

میخام اطلاعات رو از یک جدول در بانک محلی رو بفرستم به یک جدول با همون نام و فیلدها در دیتابیسی که در فضای وب

میتونم اینکارو تو سی شارپ بکنم ولی باااااید تو خود SQL انجام بدم
چطور میشه تو خود SQL دستوری نوشت که اینکارو کنه؟؟ در واقع مشخص کنم که مثلا دیتابیس وب من در این آی پی و بااین نام و رمز ذخیره شده مثلا "Data Source= 172.17.10.89; initial catalog=amin_web"








کد اصلی من جهت تغییر:

INSERT INTO [amin_web].[dbo].[Tcod] (
id, code, name
)

SELECT id, code, name
FROM [amin_local].[dbo].[Tcod]

s.karim
یک شنبه 05 مرداد 1393, 11:45 صبح
جوابشو که خودت نوشتی

DataMaster
یک شنبه 05 مرداد 1393, 11:56 صبح
یه راهش اینه که سرور دیتابیس شما آی پی ولید داشته باشه و شما به اون لینک سرور برقرار کنی و به راحتی میتونی باهاش کار کنی

modern_amin
یک شنبه 05 مرداد 1393, 12:02 عصر
s.karim من که نحوه اتصال به اونو نمیدونم چطور تو دستور SQL بزارم و حالیش کنم کجا اینسرت کنه؟؟؟


DataMaster منظورتون رو تاحدود کمی فهمیدم
من تو ذهنم همچین تصویری هست که مثلا بنویسم

INSERT INTO [ip addres sql web].[user].[pass].[amin_web].[dbo].[Tcod] (
id, code, name
)

SELECT id, code, name
FROM [amin_local].[dbo].[Tcod]


آیا میشه؟؟

میشه لطف بفرمایید بیشتر راهنمایی کنید؟؟
مچکرم

modern_amin
یک شنبه 05 مرداد 1393, 12:06 عصر
این دو مطلب هم تو اینترنت پیدا کردم ببینید شما ها سر در میارید؟؟


<object> ::=
{
[ server_name . database_name . schema_name .
| database_name .[ schema_name ] .
| schema_name .
]
table_or_view_name
}

<dml_table_source> ::=
SELECT <select_list>
FROM ( <dml_statement_with_output_clause> )
[AS] table_alias [ ( column_alias [ ,...n ] ) ]
[ WHERE <search_condition> ]
[ OPTION ( <query_hint> [ ,...n ] ) ]












-- External tool only syntax
INSERT
{
[BULK]
[ database_name . [ schema_name ] . | schema_name . ]
[ table_name | view_name ]
( <column_definition> )
[ WITH (
[ [ , ] CHECK_CONSTRAINTS ]
[ [ , ] FIRE_TRIGGERS ]
[ [ , ] KEEP_NULLS ]
[ [ , ] KILOBYTES_PER_BATCH = kilobytes_per_batch ]
[ [ , ] ROWS_PER_BATCH = rows_per_batch ]
[ [ , ] ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) ]
[ [ , ] TABLOCK ]
) ]
}

[; ] <column_definition> ::=
column_name <data_type>
[ COLLATE collation_name ]
[ NULL | NOT NULL ]

<data type> ::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max ]

s.karim
یک شنبه 05 مرداد 1393, 12:18 عصر
خب وقتی ip و یوزر و پس دیتابیس رو داری
میری داخل Sql Server Management studio
بعد
121602

اینطوری وارد دیتابیس روی سرور میشی و هر کوئری که بخوای رو می تونی توش اجرا کنی

نمیدونم درست منظورتو متوجه شده یا نه!!!

modern_amin
یک شنبه 05 مرداد 1393, 12:29 عصر
بله درسته ولی دنبال یک دستور هستم که اینکارو انجام بده

چون کاربرم نمیتونه و از نظر فنی براش سخته و هرسری برای اینسرت در چند سرور باید بیاد مجدد لاگین کنه برای هر کدوم
همچنین بحث مهم امنیتی هم هست

دنبال اینم بجای اینکه بیام اینجا لاگین کنم یک دستوری رو تو SQL اجرا کنم
که توش بگم میخام تو فلان ( آی پی سرور ، یوزر ، پسورد ، دیتابیس و جدول ) اینسرت رو انجام بدم

s.karim
یک شنبه 05 مرداد 1393, 14:00 عصر
تا اونجایی که من میدونم فکر نمی کنم توی sql Server شدنی باشه
یا باید با کد نویسی اینکارو انجام بدی
یا اینکه از برنامه های Data Compare استفاده کنی
البته دانسته های من در این زمینه کافی نیست.

modern_amin
دوشنبه 06 مرداد 1393, 10:53 صبح
ممنون از پاسختون

ولی sql یک سیستم جامع و کامل هست بنظرم حتما باید همچین چیزی داشته باشه
من شخصا بارها از یکسری امکاناتش شگفت زده شده ام...
این سوال من یک چیزی هست که هم کاربردیه و هم عمومیت داره جالبه کسی تا به حال به این مشکل نخورده....

اون مطالبی که از اینترنت پیدا کردم بدرد نمیخوره؟؟

modern_amin
یک شنبه 12 مرداد 1393, 10:25 صبح
آیا یاری کننده ای هست؟:افسرده:

Davidd
یک شنبه 12 مرداد 1393, 10:55 صبح
در محيط خود SQL هر كانتكست (Context) (محيط اجراي كوئري) به يك نمونه (Instance) از SQL متصل است به عبارت ديگه يك كانكشن استرينگ بيشتر وجود نداره. در مورد مسئله شما، دو Instance وجود داره يعني در يك كوئري نياز به دو كانكشن استرينگ هست. راه حل اينكار Linked Server هست كه با دستور sp_addlinkedserver يك سرور مجازي ساخته ميشه و در داخل كوئري قبل از نام جدول نام سرور مينويسي (البته من خودم اينكارو نكردم ولي راهش همينه)

اگر در محيط برنامه نويسي .NET بخواي اينكارو بكني با توجه به اينكه جدولها هم نوع هستند با SqlBulckCopy ميشه اينكارو انجام داد. اين كلاس اطلاعات يك جدول select ميكنه و در يك جدول ديگه در سرور مجزا كپي ميكنه.

modern_amin
چهارشنبه 15 مرداد 1393, 11:59 صبح
این لینک ببینید شما میتونید کوئریشو بنویسید؟
تو عمل نمیشه انگار

http://www.dotnettips.info/post/397/%D8%B3%D8%B1%D9%88%D8%B1%D9%87%D8%A7%DB%8C-%D9%85%D8%AA%D8%B5%D9%84-%D8%B4%D8%AF%D9%87%E2%80%8C%DB%8C-sql-server-%D9%88-%D9%85%D8%A8%D8%AD%D8%AB-%D8%AA%D8%B1%D8%A7%DA%A9%D9%86%D8%B4%E2%80%8C%D9%8 7%D8%A7

modern_amin
پنج شنبه 16 مرداد 1393, 10:05 صبح
:گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: :گریه::گریه::گریه::گریه::گریه: