2012-05-08 24 views
5

Tôi có một tập tin bên trong một thư mục \\myServer\Admin\temp\testtemp.txtSQL server 2008: Sao chép một tập tin và đổi tên nó

tôi cần phải viết một TSQL để

  1. Tìm kiếm testtemp.txt tập tin.
  2. Nếu tồn tại, tạo ra một bản sao của nó và đổi tên nó để Copytesttemp.txt
  3. Nếu có testtemp.txt đã có trong thư mục trên như thế này

    \\abcd\Admin\temp\Copytesttemp.txt 
    
  4. sau đó xóa nó và tạo Copytesttemp.txt

Làm thế nào để đạt được nó? Cảm ơn.

+0

đây là một phần nhỏ của TSQL tôi. Tôi muốn để có thể vượt qua tập tin copytesttemp.txt mới này cho hoạt động chèn số lượng lớn của tôi và truy vấn sau đó bảng kết quả từ chèn số lượng lớn, tạo ra một khung nhìn, vv v.v. – Nemo

+1

Bạn đã thử gì - chúng tôi không chỉ từng bước làm mọi thứ chúng tôi chỉ có thể cung cấp hướng dẫn. – JonH

+0

Trong ref để http://stackoverflow.com/questions/10486013/sql-server-2008-bulk-insert-taking-forever, tôi cần để có thể vượt qua tập tin Copytesttemp.txt để hoạt động Chèn số lượng lớn của tôi.Vui lòng cho tôi biết nếu bạn cần giải thích thêm. Cảm ơn một lần nữa. – Nemo

Trả lời

14

Bạn có thể sử dụng xp_cmdshell để chạy bất kỳ lệnh DOS nào bạn thích, ví dụ:

declare @cmdstring varchar(1000) 

set @cmdstring = 'copy \\myServer\Admin\temp\testtemp.txt \\myServer\Admin\temp\Copytesttemp.txt' 
exec master..xp_cmdshell @cmdstring 

Chỉ cần đảm bảo xp_cmdshell được bật trên cài đặt của bạn.

+0

Xin chào Paul, cảm ơn sự giúp đỡ của bạn. Nhưng tôi bị truy cập bị từ chối, 0 tệp đã được sao chép. Tôi đã kiểm tra và thấy rằng xp_cmdshell được cài đặt/kích hoạt trên máy chủ của tôi. Bất kỳ đầu mối? – Nemo

+0

Kiểm tra xem SQL Server đang chạy tài khoản nào và sau đó kiểm tra xem tài khoản đó có thể Đọc/Ghi thư mục được chia sẻ mà bạn đang cố ghi vào hay không. – Paul

+0

Cảm ơn Paul. Đó là vấn đề quyền và nó đã được sửa. Tôi đã được cấp quyền truy cập tài nguyên trong mạng. – Nemo

3

Tạo tác vụ SQL Agent chạy một tập lệnh để thực hiện các tác vụ.

0

Bạn có thể thử điều này cho Sao chép một tập tin và đổi tên

EXEC master..xp_cmdshell 'COPY D:\T1\a.txt D:\T2\b.txt' 

Chỉ sao chép và di chuyển giống như CMD

EXEC master..xp_cmdshell 'COPY D:\T1\abcd.txt D:\T2' 
EXEC master..xp_cmdshell 'Move D:\T1\abcd.txt D:\T2' 
Các vấn đề liên quan