ایمپورت جداول در دیتا بیس sql 2012
سلام
لطفا و در صورت امکان بنده را راهنمایی کنید .
جداول یک دیتابیس را می خواهم انتقال بدم
اسکریپت دیتابیس را دارم و یک دیتابیس جدید هم ایجاد کردم . به چه صورت کل اون دیتابیس را به این جدید انتقال بدم .
مبتدی هستم لطفا در صورت امکان کامل راهنمایی کنید .
با تشکر
5 پاسخ
سلام
خیلی لطف کردید . جواب کاملی بود این مراحل را بلد نبودم یاد گرفتم و مدیون شما هستم .
مشکل من اینه که الان اسکریپت را دارم ( از یک دیتا بیس گرفتم و فقط جداول خالی هست که می خوام برای یک سایت دیگه از همین نوع کپی کنم ) ولی نمیتونم روی دیتابیس جدید که ایجاد کردم ایمپورت کنم .
دوست عزیز، شما به دو صورت می تونید بانک رو انتقال بدید، یکی تهیه کپی پشتیبان از بانک و Restore کردن آن روی مقصد هست. پیشنهاد می کنم مقالات دوست خوبم مهندس نصیری را در این باره مطالعه کنید:
حالت دیگه ایجاد Script از روی بانک به همراه اطلاعات اون هست. برای اینکار، ابتدا بر روی بانک مورد نظر راست کلیک کنید و از قسمت Tasks گزینه Generate Scripts و انتخاب کنید:
بعد از اینکار از پنجره باز شده میتونید گزینه Script entire database and all database objects را برای اسکریپت کردن کل بانک و یا Select specific database objects برای انتخاب کردن موارد دلخواه را انتخاب کنید:
با کلیک بر روی Next از پنجره باز شده روی دکمه Advance کلیک کرده و از لیست گزینه Types of data to script رو روی Schema and Data قرار بدید و روی دکمه Ok کلیک کنید:
در نهایت بر اساس نیازتون یکی از گزینه های Save to file یا Save to clipboard و یا Save to new query window رو انتخاب کنید و روی دکمه Next کلیک کنید و در پنجره بعدی هم روی Next کلیک کنید. با این کار Script شما برای ایجاد بانک به همراه داده ها ایجاد خواهد شد که با اجرای این Script رو کامپیوتر بانک شما ایجاد میشه. از این روش بیشتر برای انتقال اطلاعات از نسخه های جدیدتر SQL به نسخه های قدیمی تر استفاده میشه.
البته موارد دیگه ای هم مثل Copy Database وجود داره که همین دو تا مورد ذکر شده کار شما رو راه میندازه.
دوست عزیز اگه طبق روشی که جناب مهندس گفتن شما اسکریپت رو از روی دیتابیس قبلی ساختی الان فقط باید اسکریپت رو اجرا کنی تا هم دیتا و هم Schema انتقال داده بشه.
اگه میخوای روی یه سرور کپی کردن دیتا رو انجام بدی کافیه از اسکریپتی که نوشتم استفاده کنی:
DECLARE @AllTables INT, @I INT, @Query NVARCHAR(500) SELECT @AllTables = COUNT(name) FROM sys.tables SELECT @I = 1 IF EXISTS ( SELECT * FROM sys.tables WHERE name='MyTempTable') DROP TABLE MyTempTable SELECT ROW_NUMBER() OVER ( ORDER BY name) AS ID, OBJECT_SCHEMA_NAME(object_id)+'.'+name AS name INTO MyTempTable FROM sys.tables IF EXISTS( SELECT * FROM sys.databases WHERE name='MyNewDatabase') DROP DATABASE MyNewDatabase CREATE DATABASE MyNewDatabase WHILE ( @I <= @AllTables ) BEGIN SELECT @Query = name FROM MyTempTable WHERE ID=@I SELECT @Query = 'SELECT * INTO '+'MyNewDatabase.'+@Query+' FROM '+@Query EXEC(@Query) SELECT @I+= 1 END DROP TABLE MyTempTable
البته این اسکریپت فقط دیتا رو انتقال میده به دیتابیس جدیدی به اسم MyNewDatabase و Relation ها رو منتقل نمیکنه.
چون سوال شما گنگ بود من دقیق نفهمیدم شما میخوای چیکار کنی.
اگه میخوای فقط جداول و رابطه های جداول و Schema رو منتقل کنی ( یعنی بدون اطلاعات موجود در جدول ها ) کافیه بعد از اجرای اسکریپت اولیه ات بری و با دستور:
DELETE FROM TableNames
اطلاعات جداولت رو پاک کنی.
اگه باز به جواب دلخواهت نرسیدی لطفا واضح تر توضیح بده تا بشه بهتر راهنماییت کرد
سلام
دیتابیس جدید خالی هست فقط یک دیتابیس ایجاد کردم . می خوام جداول خالی را روی این کپی کنم .
الان اسکریپت جداول را دارم می خوام بریزم روی این دیتا بیس خالی
اجرای اسکریپت را بلد نیستم .
یکی از دوستان فرموده بودند فایل اسکریپت را باز کنم و روی دیتابیس جدید ایجاد شده ّf5 را بزنم . جداول کپی می شود .
ولی بعد از این کار ایراد می گیرد که همه این جداول به این اسم الان موجود هستند . در حالی که دیتابیس جدید کاملا خالی هست .
در صورت امکان شماره تلفن بفرستید . جبران می کنم
دوست عزیز احتمالا اسکریپتتون اولش این کوئری رو داره :
USE [OldDatabaseName] GO
و این کوئری باعث میشه که اسکریپت روی دیتابیس قبلی اجرا بده و ارور بده.اگه خط اول اسکریپتت با این دستور شروع میشه میتونی اون رو حذف کنی و یا به جای OldDatabaseName اسم دیتابیس جدیدت رو بزاری