Làm cách nào tôi có thể sao lưu các bảng cụ thể trong SQL Server 2008 bằng T-SQL Script


14

Tôi muốn sao lưu các bảng cụ thể có sẵn trong cơ sở dữ liệu của mình trong một .baktệp và tất cả những bảng này phải được thực hiện bằng cách sử dụng tập lệnh T-SQL.

Câu trả lời:


11

Các loại sao lưu phụ thuộc vào Mô hình khôi phục máy chủ SQL. Mỗi mô hình khôi phục cho phép bạn sao lưu toàn bộ hoặc một phần cơ sở dữ liệu SQL Server hoặc các tệp riêng lẻ hoặc nhóm tệp của cơ sở dữ liệu. Sao lưu mức bảng không thể được tạo, không có tùy chọn như vậy. Nhưng có một cách giải quyết cho việc này

Có thể sao lưu bảng SQL Server trong SQL Server. Có nhiều cách khác nhau để sao lưu bảng trong SQL Server SQL

  1. BCP (CHƯƠNG TRÌNH SAO CHÉP)
  2. Tạo bảng Script với dữ liệu
  3. Tạo một bản sao của bảng bằng cách sử dụng CHỌN VÀO
  4. TIẾT KIỆM Dữ liệu bảng trực tiếp trong một tệp phẳng
  5. Xuất dữ liệu bằng SSIS tới bất kỳ đích nào

Ở đây tôi chỉ giải thích phần còn lại đầu tiên bạn có thể biết

Phương pháp 1 - Sao lưu bảng sql bằng BCP (CHƯƠNG TRÌNH SAO CHÉP)

Để sao lưu bảng SQL có tên "Person.Contact", nằm trong SQL Server AdventureWorks, chúng ta cần thực thi đoạn script sau,

-- 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

ĐẦU RA

nhập mô tả hình ảnh ở đây

Ghi chú -

  1. Bạn phải có đặc quyền nhập / xuất số lượng lớn
  2. Ở trên Script -n biểu thị các kiểu dữ liệu SQL gốc, là khóa trong quá trình khôi phục
  3. -T biểu thị rằng bạn đang kết nối với SQL Server bằng Xác thực Windows, trong trường hợp bạn muốn kết nối bằng Xác thực Máy chủ SQL, hãy sử dụng -U -P
  4. Điều này cũng sẽ cho biết, bạn tăng tốc độ truyền dữ liệu, trong trường hợp của tôi, đây là 212468,08 hàng mỗi giây.
  5. Khi các lệnh này hoàn thành, điều này sẽ tạo một tệp có tên "AdventureWorks.Person.Contact_20120222" là một thư mục đích được chỉ định

Ngoài ra , bạn có thể chạy BCP thông qua dấu nhắc lệnh và gõ lệnh sau trong dấu nhắc lệnh, cả hai thao tác đều thực hiện cùng một hoạt động, nhưng tôi thích phương thức được đề cập ở trên vì đó là loại lưu trong việc mở dấu nhắc lệnh và gõ.

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

nhập mô tả hình ảnh ở đây


9

Cách 1:

Nếu bạn chỉ quan tâm đến dữ liệu trong các bảng và được sử dụng cục bộ trong cùng một cơ sở dữ liệu và máy chủ, bạn có thể sử dụng truy vấn bên dưới để sao lưu các bảng đã chọn:

SELECT * INTO newtable1
FROM originalTable1

--- Đối với bảng 2

SELECT * INTO newtable2
FROM originalTable2

và v.v ... cho n số bảng

Tuyên bố này S CRE TẠO các bảng được gọi là newtable1, newtable1, .. do đó bạn không phải tạo trước đó.

Lưu ý * Phương pháp này thực hiện sao lưu khá nhanh nhưng nhược điểm lớn là nó không mang theo Khóa, Chỉ mục và Ràng buộc của bảng và sao lưu được lưu trữ trong cơ sở dữ liệu không ở đâu đó bên ngoài tệp

Cách 2:

Nếu bạn muốn sao lưu bảng qua máy chủ khác cho bất kỳ giải pháp khắc phục thảm họa hoặc ngăn ngừa mất dữ liệu nào, thì bạn có thể tạo kịch bản cho bảng bằng tùy chọn Tạo tập lệnh từ Tác vụ.

  1. Đầu tiên, nhấp chuột phải vào cơ sở dữ liệu chứa các bảng bạn muốn sao lưu và chọn Nhiệm vụ -> Tạo tập lệnh

  2. Chọn cơ sở dữ liệu của bạn từ danh sách có các bảng cần được sao lưu

  3. Màn hình tiếp theo xuất hiện là Tùy chọn tập lệnh.

  4. Cuộn xuống các tùy chọn tập lệnh cho đến khi bạn thấy Tùy chọn Bảng / Xem. Chúng tôi muốn những điều sau đây là đúng: Kiểm tra các ràng buộc, Dữ liệu tập lệnh, Khóa ngoại, Khóa chính, Kích hoạt và Khóa duy nhất. (Hoặc bạn có thể chọn bất cứ điều gì bạn cần tất nhiên). Chọn tiếp theo và chúng tôi được trình bày với màn hình Chọn loại đối tượng

  5. Chọn Bảng và nhấn tiếp theo. Cuối cùng, chọn bảng hoặc bảng bạn muốn sao lưu và nhấn tiếp theo

Cách 3:

Bạn cũng có thể sử dụng tiện ích bcp để sao lưu bảng.


1

Bạn không thể sao lưu các bảng cụ thể vào một .baktệp, bạn có thể xuất chúng sang csv hoặc script chúng ra hoặc sử dụng bcpđể đặt chúng vào một tệp.

Những gì bạn có thể làm nếu bạn muốn sao lưu các bảng cụ thể (và chúng luôn giống nhau) là chuyển chúng vào một file groupnhóm tệp riêng biệt và sao lưu.

Xem Back Up Files và Filegroups để biết tài liệu.

Ví dụ: nếu bạn muốn sao lưu các tệp hoặc nhóm tệp cụ thể bằng T-SQL, bạn có thể sử dụng (từ liên kết)

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

--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

1
Thật không may, bạn phải sao lưu tất cả các nhóm đọc / ghi cùng nhau, vì vậy bạn không thể chỉ chọn một.
Kamil Gosciminski

1

Dựa trên Phương pháp 1 từ phản hồi của KASQLDBA:

Tạo một cơ sở dữ liệu riêng biệt để giữ bản sao dự phòng của các bảng. Sửa đổi truy vấn được cung cấp của KASQLDBA để bạn chọn từ bảng gốc của mình và sao chép vào cơ sở dữ liệu thay thế.

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

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

Bạn có thể tạo một tập lệnh bỏ các bảng trong cơ sở dữ liệu mới, sau đó chạy lệnh select thành các lệnh cho mỗi bảng được yêu cầu. Nếu bạn muốn có các chỉ mục và các đối tượng khác có sẵn, thì bạn có thể xây dựng chúng trên cơ sở dữ liệu mới của mình và cắt bớt các bảng trước khi điền lại chúng. Nếu bạn thích cắt ngắn, thì bạn sẽ cần sử dụng các câu lệnh chèn thay cho lựa chọn.

Tùy chọn này sẽ cung cấp cho bạn một phương thức để tạo tệp .BAK. Bạn chỉ cần chạy một lệnh cơ sở dữ liệu sao lưu sau khi bạn đã điền các bảng trong cơ sở dữ liệu mới.


1

Sử dụng tính năng xuất hàng loạt của SSMS, đây là phương pháp tốt nhất và dễ nhất được đề cập

Trình hướng dẫn nhập và xuất SQL Server : Trình hướng dẫn nhập và xuất SQL Server cung cấp giao diện người dùng đồ họa trên gói Dịch vụ tích hợp máy chủ SQL (SSIS). Sau khi tạo gói có thể được tự động, để chạy theo lịch trình. Nó có thể được cấu hình và sửa đổi thêm bằng cách sử dụng Công cụ dữ liệu SQL Server (SSDT)

Để bắt đầu, hãy mở Trình hướng dẫn nhập và xuất, bấm chuột phải vào cơ sở dữ liệu và chọn menu phụ Tác vụ -> Xuất lệnh dữ liệu.

nhập mô tả hình ảnh ở đây


Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
kevinsky

@kevinsky Chắc chắn rồi! Nhưng ít nhất bạn nên bình chọn nó!
Sayyed Dawood

-1

Một phương pháp khác là sử dụng script / sproc: DumpDataFromTable.sql từ: https://github.com/Zindur/MSQuery-DumpTable/tree/master/Scripts

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

Bạn phải vượt qua: tên lược đồ và tên bảng, sau đó đường dẫn đầu ra nơi tập lệnh đã tạo sẽ được lưu (thư mục ghi chú phải được tạo / tồn tại và sql có quyền xem bình luận trong sproc).

Và nếu bạn muốn, bạn có thể thêm một điều kiện vào bảng (bộ lọc phải bắt đầu bằng AND trong thời điểm này)


thủ tục này phụ thuộc vào thủ tục bị thiếu PRC_WritereadFile
SubqueryCrunch

-2

Sao lưu một bảng duy nhất với dữ liệu từ cơ sở dữ liệu trong SQL Server 2008:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.