473,396 Members | 1,816 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

copying data from one server to another

Hi all

I am trying to copy data from one database server to another. I only
want to copy one table's data, not the entire database. The part that
I am having trouble with is connecting from one database server and
connect to another then telling it to insert into the second database
server.

Not sure if this is how it works.

any help is appreciated.
thanks
Harold
Jun 27 '08 #1
9 15712
You can add linked server and use it to copy the table data across server.
Creating linked server is done using sp_addlinkedserver:

EXEC sp_addlinkedserver 'RemoteServer', N'SQL Server'

Based on security settings you may need to map remote server logins. This is
done using sp_addlinkedsrvlogin:

EXEC sp_addlinkedsrvlogin 'RemoteServer', 'false', 'LocalUser',
'RemoteUser', 'RemotePassword'

Then you just run a normal query referencing the linked server table with 4
part name:

INSERT INTO TargetTable
SELECT <columns>
FROM RemoteServer.RemoteDB.dbo.RemoteTable

HTH,

Plamen Ratchev
http://www.SQLStudio.com

Jun 27 '08 #2
On Apr 22, 8:49 pm, "Plamen Ratchev" <Pla...@SQLStudio.comwrote:
You can add linked server and use it to copy the table data across server.
Creating linked server is done using sp_addlinkedserver:

EXEC sp_addlinkedserver 'RemoteServer', N'SQL Server'

Based on security settings you may need to map remote server logins. This is
done using sp_addlinkedsrvlogin:

EXEC sp_addlinkedsrvlogin 'RemoteServer', 'false', 'LocalUser',
'RemoteUser', 'RemotePassword'

Then you just run a normal query referencing the linked server table with 4
part name:

INSERT INTO TargetTable
SELECT <columns>
FROM RemoteServer.RemoteDB.dbo.RemoteTable

HTH,

Plamen Ratchevhttp://www.SQLStudio.com


How if i need to : 'SET IDENTITY_INSERT ON' before execute insert
command ?

i have try it before :
SET IDENTITY_INSERT [remoteservername].Library2005.dbo.tblLanguages ON
--will result error
[remoteservername].Library2005.dbo.sp_executesql N'SET IDENTITY_INSERT
dbo.tblLanguages ON' --no error

That command executes without error, but the problem is that I cannot
perform the actual insert, because it is not within the execute
statement. In other words, the following doesn't work:

EXECUTE [remoteservername].Library2005.dbo.sp_executesql N'SET
IDENTITY_INSERT dbo.tblLanguages ON'
INSERT INTO [remoteservername].Library2005.dbo.tblLanguages
(colLangID, colEnglish, colGerman, colSpanish)
SELECT colLangID, colEnglish, colGerman, colSpanish FROM tblLanguages

This results in the error:

Msg 7344, Level 16, State 1, Line 2
OLE DB provider 'SQLOLEDB' could not INSERT INTO table
'[remoteservername].[Library2005].[dbo].[tblLanguages]' because of
column 'colLangID'. The user did not have permission to write to the
column.

The remote server is linked correctly on my end via the
sp_addlinkedserver and sp_addlinkedsrvlogin. Is there any way to force
the remote server to turn IDENTITY_INSERT ON permanently and then let
me execute as many INSERTS as I want and then turn it back OFF?
Jun 27 '08 #3
If you can set up a linked server the other way around (from your remote
server to the local server), then executing the query on the remote server
will have no problems setting IDENTITY_INSERT ON. The option cannot be set
permanently and it has to be set in the same session as the INSERT
statement.

Alternative is to use BCP or Bulk Insert to insert the data which have
option to keep identity.

HTH,

Plamen Ratchev
http://www.SQLStudio.com

Jun 27 '08 #4
i have 2 server Server A and Server B.
On Server A, I have table Stock :

CREATE TABLE [dbo].[Stock] (
[Stock_Id] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]

On Server B, I have table Stock too:
CREATE TABLE [dbo].[Stock] (
[Stock_Id] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]

i want copy from server A to Server B, using this :

sp_dropserver 'mylink'
go

sp_addlinkedserver 'mylink', '', 'SQLOLEDB', NULL, NULL, 'DRIVER={SQL
Server};SERVER=B02;UID=sa;PWD=QWERTY;'
go

exec sp_serveroption @server='mylink', @optname='rpc out',
@optvalue='true'
go

EXECUTE [mylink].[serverB].[dbo].[sp_executesql] N'SET IDENTITY_INSERT
dbo.Stock ON
INSERT INTO Tr_Stock (Stock_Id) SELECT Stock_Id FROM ( ???? i have
active in remote server now ??? )Stock
SET IDENTITY_INSERT dbo.Stock OFF'
but i Still get error.

I think, the problem is when using : EXECUTE [mylink].[serverB].[dbo].
[sp_executesql] . How to execute insert ?

Jun 27 '08 #5
On May 15, 1:18 pm, imo...@gmail.com wrote:
i have 2 server Server A and Server B.
On Server A, I have table Stock :

CREATE TABLE [dbo].[Stock] (
[Stock_Id] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]

On Server B, I have table Stock too:
CREATE TABLE [dbo].[Stock] (
[Stock_Id] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]

i want copy from server A to Server B, using this :

sp_dropserver 'mylink'
go

sp_addlinkedserver 'mylink', '', 'SQLOLEDB', NULL, NULL, 'DRIVER={SQL
Server};SERVER=B02;UID=sa;PWD=QWERTY;'
go

exec sp_serveroption @server='mylink', @optname='rpc out',
@optvalue='true'
go

EXECUTE [mylink].[serverB].[dbo].[sp_executesql] N'SET IDENTITY_INSERT
dbo.Stock ON
INSERT INTO Tr_Stock (Stock_Id) SELECT Stock_Id FROM ( ???? i have
active in remote server now ??? )Stock
SET IDENTITY_INSERT dbo.Stock OFF'

but i Still get error.

I think, the problem is when using : EXECUTE [mylink].[serverB].[dbo].
[sp_executesql] . How to execute insert ?
Sory, i have to remote from local server to remote
server, so i must using set identity on, before execute insert
command.

regards
Jun 27 '08 #6
On May 15, 12:40 pm, "Plamen Ratchev" <Pla...@SQLStudio.comwrote:
If you can set up a linked server the other way around (from your remote
server to the local server), then executing the query on the remote server
will have no problems setting IDENTITY_INSERT ON. The option cannot be set
permanently and it has to be set in the same session as the INSERT
statement.

Alternative is to use BCP or Bulk Insert to insert the data which have
option to keep identity.

HTH,

Plamen Ratchevhttp://www.SQLStudio.com

Dear Mr Plamen,

I can not set up a linked server the other way around (from your
remote
server to the local server).

Now, i want try using Bulk Insert the data which have option to keep
identity, but
my problem is, i can't access data from local server cause i have
ready come in to
remote server.

before, i just want execute :
INSERT INTO mylink.serverB.dbo.Tr_Stock (Stock_Id) SELECT Stock_Id
FROM Stock

coz i just 1 option to execute identity_insert using :
EXECUTE [mylink].[serverB].[dbo].[sp_executesql] N'SET IDENTITY_INSERT
dbo.Stock ON
, so now i cant using this again : INSERT INTO
mylink.serverB.dbo.Tr_Stock (Stock_Id) SELECT Stock_Id FROM Stock

Regards,
Thanks
Jun 27 '08 #7
One way to work around the issue is to create a staging table on the remote
server. The table will not have IDENTITY column, so you can transfer the
data. Then have a stored procedure to transfer between the staging table and
the production table. Inside the stored procedure you can set
IDENTITY_INSERT ON and complete the insert.

HTH,

Plamen Ratchev
http://www.SQLStudio.com

Jun 27 '08 #8
On May 15, 8:01 pm, "Plamen Ratchev" <Pla...@SQLStudio.comwrote:
One way to work around the issue is to create a staging table on the remote
server. The table will not have IDENTITY column, so you can transfer the
data. Then have a stored procedure to transfer between the staging table and
the production table. Inside the stored procedure you can set
IDENTITY_INSERT ON and complete the insert.

HTH,

Plamen Ratchevhttp://www.SQLStudio.com

Ok, thanks for all. Regards.
Jun 27 '08 #9
(im****@gmail.com) writes:
That command executes without error, but the problem is that I cannot
perform the actual insert, because it is not within the execute
statement. In other words, the following doesn't work:

EXECUTE [remoteservername].Library2005.dbo.sp_executesql N'SET
IDENTITY_INSERT dbo.tblLanguages ON'
This is because the effect of a SET command is reverted when the
scope in which the SET command is executed exists. You would
need to have the SET command and the INSERT statement in the
same batch.

Overall, this is a good example how IDENTITY can buy you a load of
troubles. Had you rolled your own, you would have copied the data
long ago.

--
Erland Sommarskog, SQL Server MVP, es****@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pro...ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinf...ons/books.mspx
Jun 27 '08 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Robert Tarantino | last post by:
Hello, I am trying to find a way to create a scheduled task or service that will copy my local profile folders under "Documents and settings" to a network drive. This would allow me to restore...
3
by: 21novembre | last post by:
Hi all, I made a question several days before to describe my strange trouble of mysqldump. But I still can't figour it out. Well, I just want to ask another question whether I could just backup...
2
by: Don | last post by:
Using JS, how do I copy an associative array from one frame to another? Here's what I tried, and didn't work. In "main" frame referencing "header" frame: var cookies = new Object(); cookies...
0
by: TB | last post by:
Hi All: This news group is proving to be great help on my path towards mastering ASP.NET thanks to all of you helpful souls out there. I am looking forward to the day when I can contribute with...
5
by: TB | last post by:
Hi All: This news group is proving to be great help on my path towards mastering ASP.NET thanks to all of you helpful souls out there. I am looking forward to the day when I can contribute...
4
by: zMisc | last post by:
Is it possible to copy a table from one schema to another schema by just copying the frm file to the directory for the new schema? What is the best way to create a new database with all the...
1
by: maflatoun | last post by:
Hi, In SQL 2000 if I wanted to take a complete copy of another running sql database all did was create a new database locally and right-click it and select import and point to another database...
3
by: John | last post by:
Hi all, My application updates a sql server 2005 express database prior to copying it with the result being the "in use by another process" and I cannot copy it as a result. I've posted the code...
20
by: TC | last post by:
I need an automated procedure to copy data from an Access table to a SQL Server table. Speed is important. What is the recommended technique? I can export the data from Access, copy it via FTP,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.