Bagaimana saya bisa membuat cadangan tabel tertentu dalam SQL Server 2008 menggunakan T-SQL Script

14

Saya ingin mengambil cadangan tabel tertentu yang tersedia di database saya dalam .bakfile, dan semua ini harus dilakukan menggunakan skrip T-SQL.

Firoz Tennali
sumber

Jawaban:

11

Jenis cadangan tergantung pada Model Pemulihan SQL Server. Setiap model pemulihan memungkinkan Anda mencadangkan seluruh atau sebagian database SQL Server atau file individual atau grup-grup database. Pencadangan tingkat-tabel tidak dapat dibuat, tidak ada opsi seperti itu. Tetapi ada solusi untuk ini

Mengambil cadangan dari tabel SQL Server mungkin dalam SQL Server. Ada berbagai cara alternatif untuk membuat cadangan tabel di sql SQL Server

  1. BCP (PROGRAM SALINAN BULK)
  2. Hasilkan Skrip Tabel dengan data
  3. Buat salinan tabel menggunakan SELECT INTO
  4. SIMPAN Data Tabel Langsung dalam file Flat
  5. Ekspor Data menggunakan SSIS ke tujuan apa pun

Di sini saya menjelaskan hanya istirahat pertama yang mungkin Anda ketahui

Metode 1 - Cadangkan tabel sql menggunakan BCP (BULK COPY PROGRAM)

Untuk mencadangkan tabel SQL bernama "Person.Contact", yang berada di SQL Server AdventureWorks, kita perlu menjalankan skrip berikut, yang

-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' --  Table Name which you want    to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) --  Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd

KELUARAN

masukkan deskripsi gambar di sini

Catatan -

  1. Anda harus memiliki hak impor / ekspor massal
  2. Dalam Script di atas -n menunjukkan tipe data SQL asli, yang merupakan kunci selama pemulihan
  3. -T menunjukkan bahwa Anda terhubung ke SQL Server menggunakan Windows Authentication, jika Anda ingin terhubung menggunakan SQL Server Authentication menggunakan -U -P
  4. Ini juga akan memberi tahu, Anda mempercepat transfer data, dalam kasus saya ini adalah 212468,08 baris per detik.
  5. Setelah perintah ini selesai, ini akan membuat file bernama "AdventureWorks.Person.Contact_20120222" adalah folder tujuan yang ditentukan

Atau , Anda dapat menjalankan BCP melalui command prompt dan ketik perintah berikut di command prompt, kedua operasi melakukan aktivitas yang sama, tapi saya suka metode yang disebutkan di atas karena itu simpan ketik dalam membuka prompt perintah dan ketik.

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

masukkan deskripsi gambar di sini

Tufan Chand
sumber
9

Metode 1:

Jika Anda hanya peduli dengan data dalam tabel dan yang akan digunakan secara lokal dalam database dan server yang sama, Anda dapat menggunakan kueri di bawah ini untuk mengambil cadangan dari tabel yang dipilih:

SELECT * INTO newtable1
FROM originalTable1

--- Untuk tabel 2

SELECT * INTO newtable2
FROM originalTable2

dan seterusnya ... untuk n jumlah tabel

Pernyataan ini AKAN MENCIPTAKAN tabel yang disebut newtable1, newtable1, .. dengan demikian Anda tidak harus membuatnya sebelumnya.

Catatan * Metode ini mengambil cadangan cukup cepat tetapi kerugian utama adalah bahwa ia tidak membawa Kunci, Indeks dan Kendala tabel dan cadangan disimpan dalam database tidak di suatu tempat secara eksternal ke file

Metode 2:

Jika Anda ingin membuat cadangan tabel ke server lain untuk solusi pemulihan bencana atau pencegahan kehilangan data, maka Anda bisa membuat skrip tabel menggunakan opsi Generate Scripts dari Tasks.

  1. Pertama, klik kanan pada database yang berisi tabel yang ingin Anda backup dan pilih Tugas -> Hasilkan Script

  2. Pilih basis data Anda dari daftar yang tabel-tabelnya perlu dicadangkan

  3. Layar selanjutnya yang muncul adalah Opsi Script.

  4. Gulir ke bawah pada opsi skrip hingga Anda melihat Table / View Options. Kami ingin yang berikut ini benar: Periksa Kendala, Data Skrip, Kunci Asing, Kunci Utama, Pemicu, & Kunci Unik. (Atau Anda dapat memilih apa pun yang Anda butuhkan tentu saja). Pilih Berikutnya dan kami disajikan dengan Layar Pilih Objek Jenis

  5. Pilih Tabel dan tekan berikutnya. Terakhir, pilih tabel atau tabel yang ingin Anda backup dan tekan berikutnya

Metode 3:

Anda dapat menggunakan utilitas bcp untuk cadangan tabel juga.

KASQLDBA
sumber
1

Anda tidak dapat membuat cadangan tabel tertentu ke .bakfile, Anda dapat mengekspornya ke csv atau skrip mereka atau gunakan bcpuntuk memasukkannya ke dalam file.

Apa yang dapat Anda lakukan jika Anda ingin membuat cadangan tabel tertentu (dan mereka selalu sama) adalah memindahkannya ke yang terpisah file groupdan membuat cadangan grup file itu.

Lihat Mencadangkan File dan Filegroup untuk dokumentasi.

Misalnya jika Anda ingin mencadangkan file atau filegroup tertentu menggunakan T-SQL, Anda dapat menggunakan (dari tautan)

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO

dan

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO
Tom V - coba topanswers.xyz
sumber
1
Sayangnya, Anda harus mencadangkan semua grup baca / tulis bersama, sehingga Anda tidak dapat memilih hanya satu.
Kamil Gosciminski
1

Membangun Metode 1 dari respons KASQLDBA:

Buat database terpisah untuk menyimpan salinan tabel yang didukung. Ubah kueri yang disediakan KASQLDBA sehingga Anda memilih dari tabel asli dan menyalin ke database alternatif.

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

Anda bisa membuat skrip yang menjatuhkan tabel di database baru, kemudian jalankan perintah select ke perintah untuk setiap tabel yang diperlukan. Jika Anda ingin memiliki indeks dan objek lain yang tersedia, maka Anda bisa membangunnya di database baru Anda dan memotong tabel sebelum mengisinya kembali. Jika Anda lebih suka pemotongan, maka Anda harus menggunakan pernyataan insert sebagai ganti select into.

Opsi ini akan memberi Anda metode untuk membuat file .BAK. Anda cukup menjalankan perintah database cadangan setelah Anda mengisi tabel di database baru.

Gary
sumber
1

Menggunakan fitur ekspor massal SSMS, berikut adalah metode terbaik dan termudah yang disebutkan

Panduan impor dan ekspor SQL Server : Panduan impor dan ekspor SQL Server menyediakan antarmuka pengguna grafis ke paket SQL Server Integration Services (SSIS). Setelah dibuat paket dapat diotomatisasi, untuk dijalankan sesuai jadwal. Itu dapat lebih lanjut dikonfigurasi dan dimodifikasi dengan menggunakan SQL Server Data Tools (SSDT)

Untuk memulai, buka panduan Impor dan ekspor, klik kanan database dan pilih sub-menu Tugas -> perintah Ekspor data.

masukkan deskripsi gambar di sini

Sayyed Dawood
sumber
Meskipun tautan ini dapat menjawab pertanyaan, lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini dan memberikan tautan untuk referensi. Jawaban hanya tautan dapat menjadi tidak valid jika halaman tertaut berubah. - Dari Ulasan
kevinsky
@kevinsky Tentu! Tapi setidaknya Anda harus memilihnya!
Sayyed Dawood
-1

Metode lain adalah dengan menggunakan skrip / sproc: DumpDataFromTable.sql dari: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

Anda harus lewat: nama skema dan nama tabel, kemudian jalur output tempat skrip yang dibuat akan disimpan (folder catatan harus sudah dibuat / ada dan sql memiliki izin melihat komentar di sproc).

Dan jika Anda mau, Anda dapat menambahkan kondisi ke tabel (filter harus dimulai dengan DAN untuk saat ini)

Oleg Cio
sumber
prosedur ini tergantung pada prosedur yang hilang PRC_WritereadFile
SubqueryCrunch
-2

Cadangkan satu tabel dengan datanya dari database di SQL Server 2008:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
JIYAUL MUSTAPHA
sumber