I want to move an existing table from another. Example B.mdf dbo.xx to C.mdf dbo.xx B.mdf dbo.xx has records - I created a script and install the script for C.mdf dbo.xx C.mdf dbo.xx is empty - All I need now is to populate the records from B.mdf dbo.xx to the empty C.mdf dbo.xx I was telling I could do a cut and paste to copy the dbo.xx Thank you in advance. ~ Peaches ~
Typically small companies or small projects which use SQL Server / IIS / File Shares / .NET solutions deploy these apps on a single server many times using just one IP address and the NETBIOS name of the server for both IIS / SQL. Many times there is no use of DNS and even when there is everything is mapped to the server/netbios name.
As environments grow and there is a requirement to create an n-tier server setup possible due to new security requirements, extention of the intranet to the internet, or to scale out an application you may need to split IIS / SQL into different servers. The question then becomes how do you do this without affecting existing services and you want to have minimal down time without having to change all connection information within deployed apps until you have time to review the changes carefully.
First let me begin with how to move IIS away from SQL and then I'll discuss the reverse.
The best way I've found to control the move of IIS sites is by assigning each site it's own ip address / dns host record and adding the ip address to the server network card and IIS site. Now each time you need to move 1 or more sites you can simply replicate the site to another server and change the dns ip pointer to the new pointer. If you have existing sites which were not setup in this fashion you can also move them to a new server, create a site with name of the old netbios machine name, and redirect the default web site to this new site.
Now you successfully isolated SQL Server from IIS/.NET apps you can take your time and correct the apps to use the new dns entry in connection strings instead of using the netbios name of the machine. Once you have corrected the app you can turn off any redirection.
Now let's assume you have the opposite scenario where you started off with a small server and your SQL database server now requires a server with more memory / more processors and you want to keep IIS / FileShares were they are and want to move SQL Databases to a new server. As I mentioned above a good way to do this is by setting up each database with it's own dns entry a very effective redirection mechanism. However you are may be inheriting a system which does not employ this mechanism and again uses the default netbios machine name, furthermore this may get more complicated because there may be multiple instances of SQL Server running on different port numbers. You could use SQL Aliases on the clients to redirect connections to the newly created instances but this would require changing every pc and IIS server and it would be cumbursome to manage. It would have been nice if microsoft provided a way to redirect from the server just like IIS does but they did not. A product which will help you setup a server based redirection of ports 1433/1434 and/or any other ports is called porttunnel by steelbytes.com. Once you've installed the redirecting service on the server all new requests on port the ports selected will be redirected to the new server which I recommend be redirected to their own dns entries and this will buy the applications developer time to change their applications.
I would like to hear any comments or experiences with this that any of you may have had or if anyone has found a better solution. I'm in no way associated with the product / or company mentioned above just found it to be a good solution.
I am having problem moving packages/solutions for one folder to other. Is there any specific way that we have to do this. I copyed a solution and pasteditin a shared folder and when i open it iam geting connection errors and package correpted errors.
i amy sound funny but pls can any of you tell me the procedure.
Hi, all. I have more than 100 DTS packages on one server which need to be migrated to another new server. What's the easiest way to do it? I can do it by opening each package then using save as to save into another server. But I have more than 100, so it is kind of tedious to do it.
Is there a way like export those packages then import them? Or script them then run it? If yes, Let me know how.
hi, Is there any way to export a set of variables from each other package?? Issues comes when you have to built five packages which share the same variables. It's very tedious and hard to re-write them every time... Thanks for your time,
How to move existing table(include its constraint and index) into a different filegroup using tsql in Sql Server 2000. We have 1000+ tables in our system and we are planning to move around 500 tables to a new file group, which is available on another SAN drive.
We have purchased a new Development SQL Server that is running SQL Server 2005. Our existing Development SQL Server is running SQL 2000.
How can I move the DTS packages from the SQL 2000 server to the new SQL 2005 server? I will be upgrading them to SSIS at some point, but don't have the time now.
There doesn't seem to be a specific group covering legacy subsystems so I thought I would post this in here.
I have several hundred of these to import that are going to be left to run as they are until such time somebody has the time to migrate them to SSIS.
I have to say I'm not look forward to doing them one at a time using the brain dead UI (it folds up folders behind itself causing another two mouse click between each import). Is there a way of automating this import?
If I use the DTSMigrationWizard.exe, to migrate my existing DTS packages from SQL Server 2000 to SQL Server 2005 will it delete the DTS packages on the 2000 server?
On this one server I have 65 DTS packages and I want to migrate them all at once if possible but still keep the DTS packages on the 2000 server.
Please can anybody help me in transferring existing SSIS Packages saved in a shared folder location from development server 2ED to Live server TWD1. Both has SQL server 2005 running and has visual studio 2005 Currently about 25 SSIS packages are executed from the development server transferring data on Live server TWD1...these ETL process is called from development server but executed on live server. Now the problem is when i call these packages from the shared folder from live server it crashes.....i need to changes something to shift the whole package to the live server..and execute on live server itself instead of recreating the whole 25 process from scratch.....also i use optimize for many tables ..and run in a single trancastion....so how can i see the mappings of source and destination tables.
Please let me know the process how i can achieve this. Thanks George
I went to look at the connection string previously entered for a dataset created in a new report, and am not seeing anything intuitive for bringing up the associated datasource dialog box that was used to enter name, type and connection string. I'm also noticing nothing intuitive for deleting an existing dataset. How do you do these two very simple things in an existing project? I dont see the dataset in solution explorer, I see it only in the text box on the data tab and in a limited kind of way on the dataset view where the columns show and maint is allowed mostly on the columns only. I tried hilighting the dataset here and hitting the delete key to no avail.
I would like to restore database using RESTORE DATABASE ... REPLACE command. If database exists already and has any open connections this command will fail. I would like to close all existing connections to specific database before running RESTORE DATABASE ... REPLACE command. I can do closing from Management Studio using checkbox "Close Existing Connection" when deleting database. Actually I need to do the same but from script.
I've run into a problem with SSIS packages wherein tasks that write or copy files, or create or delete directories, quit execution without any hint of an error nor a failure message, when called from an ASP.NET 2.0 application running on any other machine than the one where the package was created from. By all indications it appeared to be an identity/permissions problem.
Our application involves a separate web server and database server. Both have SQL Server 2005 installed, but the application server originally only had Integration services. The packages are file system-deployed on the application server, and are called using Microsoft.SqlServer.Dts.Runtime methods. For all packages that involve file system tasks, the above problem occurs.
When the above packages are run using the command prompt (either DTEXEC or DTEXECUI) the packages execute just fine. This is expected since we are using an administrative account. However when a ShellExecute of the same command is called from ASP.NET, the same problem occurs.
I've tried giving administrative permissions to the ASPNET worker process user to no avail.
I have likewise attempted to use the SQL Server Agent job approach but that approach might not be acceptable for our clients since it means installing SQL Server 2005 Database services on the application server.
I have read the relevant threads in this forum, namely http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1044739&SiteID=1 and http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=927084&SiteID=1 but failed to find any solution appropriate for our set up.
I'm a newbee to replication and wanted to know about the whole mechanism of replication and how is two way replication implemnted on 2 diffrent servers located at 2 different remote locations????
We manage some SSIS servers, which has only SSIS and SSIS tools installed on them and not the sql server DB.
SSIS packages and configuration files are deployed on a NAS. We run the SSIS packages through DTEXEC by logging in to the server.
We want to allow developers to run their packages on their own on the server, but at the same time we dont want to give them physical access on the server i.e we do not want to add them into RDP users list on server properties. We want them to allow running their packages remotely on the server.
One way We could think of is by using powershell remoting and we are working on that. But is there any other way or any tool already present for the same.
I am looking for a good method to do table lookups in a 2003 SQL database. I am retrieving products from an item table and then want to do value lookups in related tables in the same database like category name, category type, brand name etc. These values are referenced in the item master file by guid links to related tables.I am using a datareader to loop through the Select records and then I am writing results to a tab delimited data file for a data conversion. I am limited to net 1.1 and so can't use the 2.0 executescalar for single lookups.What would be the more efficienct method to use?'Dim myItemData As New DataReader Dim myItemReader As SqlClient.SqlDataReaderDim myItemCommand As New SqlClient.SqlCommand Dim myConnection = New SqlClient.SqlConnection("server=sql01.xxx") myItemCommand.Connection = myConnectionmyItemCommand.CommandText = "SELECT ""mf_items"".""item_guid"", ""mf_items"".""item_description"", ""mf_items"".""item_wholesale_price"", ""mf_items"".""item_description_title"",""mf_items"".""item_cd"",""mf_items"".""category_guid"" FROM ""CDB006"".""dbo"".""mf_items"" WHERE ""mf_items"".""item_closed"" = 0 And ""mf_items"".""item_visible"" = 1 AND ""mf_items"".""item_available"" = 1"myItemCommand.Connection.Open()myItemReader = myItemCommand.ExecuteReader()Dim myfileout As StreamWritermyfileout = File.CreateText(Server.MapPath("out.txt"))myfileout.WriteLine("link" & vbTab & "title" & vbTab & "description" & vbTab & "price" & vbTab & "image_link" & vbTab & "category" & vbTab & "id")While myItemReader.ReadIf myItemReader.Item(4).ToString() > "" And Val(myItemReader.Item(2).ToString) > 0 Then'what method to to look up for example the category name using the category_quid referenced in the item master'Write out record for parts file
I'm fiddling around with my sql server in my home computer. I would like to store a different image in each row of the product table (for example). All the pics are now in my hard disk. I gather from various discussion boards that there are several ways of saving images -
1. INTERNALLY
a)Use VB. Run in ISQL/w b) Use insert statement. INSERT INTO EMP(empno,empname ,Picture_Id) VALUES('E1235','Anthony','c:PhotosAnthony.jpg') c) Use isql/w & TSQL statement d) Use sqlgetdata and sqlputdatn e) Use textcopy in binn directory. f) Use VB & ADO
2. EXTERNALLY
a)store the image externally and simply store the path to it in a plain varchar variable.
My questions are :- (i) Can I save images simply using 1b)? (ii)Is 2a) correct ? Do I just type the name of the image file in my harddisk as the value in the table ? (iii) If I have the database linked to the internet and have it hosted by a commercial server in the future, will I have a nightmare reentering all the path names when I upload the database into the commercial server? (iv) What are the pros and cons of the various methods listed in 1.
Everytime I attempt to restore the master database, it corrupts the entire instance of SQL server 2000. I have been using the method out on Microsoft's Knowledgebase:
http://support.microsoft.com/kb/822852/en-us
using sqlservr.exe and the switches -c -m -T3608 -T4022
I would like to know if anyone has other methods of restoring the master database from a backup device.
I have developed the SSIS project, but I have a problem with deployment. My users are statistic people and SSIS packges they use are cleaning the raw data for them. Since they would like to run this SSIS package by themselves whenever they want, I need some deployment method that is easy for them to run (they are really not IT oriented people). The problem I encountered is that there is no visual studio (integration service client) installed on there computer, but they are allowed to access several dbs and server on the net.
Can someone tell me what is the best solution for this type of deployment?
I am looking to get some guidance and feed back from the community as to the prevalence and usage of the following technologies:
ODBC Descriptor support OLE DB support External Linked Server support Data Link support for Data Transformation Services
Specifically I am hoping to find out when each technology should be used and the types of applications that use them. Additionally, I am wondering if there are alternatives to these technologies and why they may have been used instead.
I am having a problem running a sql2k report service script on my new sql2005 server. It seems that the methods SessionHeader() and rs.render are no longer suport. can someone help me figure out what I need to do to continue automating my report running?
Dim skipreport as string = nothing dim skip as integer = 0
dim allbranchreport as string = nothing dim allbranch as integer = 0
dim report as CatalogItem dim repname as string = nothing dim specificreport as string = nothing dim filepath as string = nothing dim errorpath as string = nothing dim basefilepath as string = nothing dim baseerrorpath as string = nothing dim errorlog as integer = 0 Dim parameters() As ParameterValue = nothing Dim paramcount as integer = 0
' Render arguments Dim result As Byte() = Nothing Dim reportPath As String = nothing 'Dim format As String = "PDF" Dim format as string = "EXCEL" Dim historyID As String = Nothing Dim devInfo as string = Nothing Dim credentials As DataSourceCredentials() = Nothing Dim showHideToggle As String = Nothing Dim encoding As String Dim mimeType As String Dim warnings As Warning() = Nothing Dim reportHistoryParameters As ParameterValue() = Nothing Dim streamIDs As String() = Nothing Dim sh As New SessionHeader() rs.SessionHeaderValue = sh Dim omitdocmap as string = "True" '**************************************
'************************************** 'Repset run Dim repset as string = "" for each repset in repsetlist specificreports = specificreportsstart if specificreports = 0 then select case repset.tolower case "all" specificreports = 0 case "brkctr" specificreports = 1 reportcount = reportset_brkctr.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_brkctr(reportloop) next case "cashmgmt" specificreports = 1 reportcount = reportset_cashmgmt.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_cashmgmt(reportloop) next case "com" specificreports = 1 reportcount = reportset_com.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_com(reportloop) next case "com_vw" specificreports = 1 reportcount = reportset_com_vw.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_com_vw(reportloop) next repset = "com" case "comcons" specificreports = 1 reportcount = reportset_comcons.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_comcons(reportloop) next case "cons" specificreports = 1 reportcount = reportset_cons.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_cons(reportloop) next case "cons_vw" specificreports = 1 reportcount = reportset_cons_vw.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_cons_vw(reportloop) next repset = "cons" case "dep" specificreports = 1 reportcount = reportset_dep.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_dep(reportloop) next case "staff" specificreports = 1 reportcount = reportset_staff.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_staff(reportloop) next omitdocmapbranch = "False" case "staff2" specificreports = 1 reportcount = reportset_staff2.getupperbound(0) redim specificreportslist(reportcount) for reportloop = 0 to reportcount specificreportslist(reportloop) = reportset_staff2(reportloop) next omitdocmapbranch = "False" case else specificreports = 1 redim specificreportslist(0) specificreportslist(0) = "Undefined" end select
if repset.tolower = "staff2" then repset = "staff" End if
'Reports List Dim reports() as CatalogItem reports = rs.ListChildren(basereportpath, False)
'Execution if datasourceok = 1 then for each report in reports
skip = 0 allbranch = allbranchrun
for each skipreport in skipreports if report.name.tolower = skipreport.tolower then skip = 1 next
if skip = 0 then if specificreports = 1 then skip = 1 for each specificreport in specificreportslist if report.name.tolower = specificreport.tolower then skip = 0 next end if end if
if skip = 0 then for each allbranchreport in allbranchreports if report.name.tolower = allbranchreport.tolower then allbranch = 1 next
Redim parameters(1) parameters(0) = New ParameterValue() parameters(0).name = "branchall" parameters(1) = New ParameterValue() parameters(1).Name = "branch"
'5 parameters reports repname = report.name if (repname.substring(0,5).tolower = "loans" or repname.substring(0,4).tolower = "locs") then paramcount = 4 if (repname.length >= 13) then if repname.substring(0,13).tolower = "loans_beacons" then paramcount = 1 end if
if paramcount = 4 then paramcount = 0 redim preserve parameters(4)
parameters(2) = New ParameterValue() parameters(2).name = "comconsall" if repset.tolower = "cons" or repset.tolower = "com" then parameters(2).value = 0 else parameters(2).value = 1
parameters(3) = New ParameterValue() parameters(3).Name = "comcons" if repset.tolower = "com" then parameters(3).value = "commercial" else parameters(3).value = "consumer"
parameters(4) = New ParameterValue() parameters(4).Name = "brokered" parameters(4).value = 0 if repset.substring(0,3).tolower = "brk" then parameters(4).value = 1 end if
'All Branches Reports if allbranch = 1 then
parameters(0).value = "1" parameters(1).value = "admin" if client = "CSCU" then parameters(1).value = "newwst" if clienttype = "vw" then parameters(1).value = "1"
Try result = rs.Render(reportPath, format, historyID, devInfo, parameters, _ credentials, showHideToggle, encoding, mimeType, reportHistoryParameters, warnings, streamIDs) sh.SessionId = rs.SessionHeaderValue.SessionId Catch e As SoapException errorlog = 1 Console.WriteLine(e.Detail.OuterXml) Catch f as Exception errorlog = 1 Console.writeline(f.message) End Try
' Create an error log If errorlog <> 0 then Try Dim stream As FileStream = File.Create(errorpath, 1024) Console.WriteLine("Errorlog created: " & errorpath) stream.Close() Catch g As Exception Console.WriteLine(g.Message) End Try End if
' Write the contents of the report to a file. If errorlog <> 1 then Try Dim stream As FileStream = File.Create(filepath, result.Length) stream.Write(result, 0, result.Length) Console.WriteLine("Result written to file: " & filepath) stream.Close()
Catch e As Exception Console.WriteLine(e.Message) End Try end if
'Other Reports else parameters(0).value = "0"
for each branch in branches parameters(1).value = branch
errorlog = 0 if branch <> "h/o" then filepath = basefilepath & branch & "" & report.name & ".xls" else filepath = basefilepath & "ho" & report.name & ".xls" end if if branch <> "h/o" then errorpath = baseerrorpath & branch & "_" & report.name & ".txt" else errorpath = baseerrorpath & "ho_" & report.name & ".txt" end if reportpath = basereportpath & "/" & report.name omitdocmap = omitdocmapbranch devinfo = "<DeviceInfo><OmitDocumentMap>" & omitdocmap & "</OmitDocumentMap></DeviceInfo>"
Try result = rs.Render(reportPath, format, historyID, devInfo, parameters, _ credentials, showHideToggle, encoding, mimeType, reportHistoryParameters, warnings, streamIDs) sh.SessionId = rs.SessionHeaderValue.SessionId Catch e As SoapException errorlog = 1 Console.WriteLine(e.Detail.OuterXml) Catch f as Exception errorlog = 1 Console.writeline(f.message) End Try
' Create an error log If errorlog <> 0 then Try Dim stream As FileStream = File.Create(errorpath, 1024) Console.WriteLine("Errorlog created: " & errorpath) stream.Close() Catch g As Exception Console.WriteLine(g.Message) End Try End if
' Write the contents of the report to a file. If errorlog <> 1 then Try Dim stream As FileStream = File.Create(filepath, result.Length) stream.Write(result, 0, result.Length) Console.WriteLine("Result written to file: " & filepath) stream.Close()
Catch e As Exception Console.WriteLine(e.Message) End Try end if
The specified script failed to compile with the following errors: J:PRA Publisher> "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727vbc.exe" /t:exe /main:MainModule /utf8output /R:"System.dll" /R:"System.Xml.dll" /R:"System.Web .Services.dll" /R:"C:Program FilesMicrosoft SQL Server90Toolsinn s.exe" / out:"C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.exe" /debug- "C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.0.vb" "C:Docu ments and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb"
Microsoft (R) Visual Basic Compiler version 8.0.50727.42 for Microsoft (R) .NET Framework version 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved.
C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(253) : error BC30002: Type 'SessionHeader' is not defined.
Dim sh As New SessionHeader() ~~~~~~~~~~~~~ C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(254) : error BC30456: 'SessionHeaderValue' is not a member of 'Microsoft.SqlServer.Reporting Services2005.ReportingService2005'.
rs.SessionHeaderValue = sh ~~~~~~~~~~~~~~~~~~~~~ C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(434) : error BC30456: 'Render' is not a member of 'Microsoft.SqlServer.ReportingServices2005 .ReportingService2005'.
result = rs.Render(reportPath, format, historyID, de vInfo, parameters, _ ~~~~~~~~~
C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(436) : error BC30456: 'SessionHeaderValue' is not a member of 'Microsoft.SqlServer.Reporting Services2005.ReportingService2005'.
sh.SessionId = rs.SessionHeaderValue.SessionId ~~~~~~~~~~~~~~~~~~~~~ C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(496) : error BC30456: 'Render' is not a member of 'Microsoft.SqlServer.ReportingServices2005 .ReportingService2005'.
result = rs.Render(reportPath, format, historyID , devInfo, parameters, _ ~~~~~~~~~
C:Documents and SettingsetopLocal SettingsTemp1fw7qn9k.1.vb(498) : error BC30456: 'SessionHeaderValue' is not a member of 'Microsoft.SqlServer.Reporting Services2005.ReportingService2005'.
i had read information about sce and i had not unsderstood a little thing:
is it possible or not to use a dataset with that version of sql server? i have a class that access the database with some functions and one of then return a dataset. the dataset is not to be used because it does not make sense with sql server compact edition or it cannot by use at all cause sql server compact edition does not support it?
thkx and by the way i think that it's a great product!
I have a dll which is developed in C#. I have made a reference to it from Reporting Services under Report Properties.
My problem is, that the methods in this dll are not static. Therefore under the Classes in Report Properties I have written the class-name and the instance-names of the instances that I need to use from this class (as I understand it, this is what you have to do if using non-static methods). In a text-box, I call one of the instances in the class, but I get this error:
[rsInvalidName] 'MyMethod()' is not a valid code class name. Names of objects must be CLS-compliant identifiers.
Lets say you want to offer users access to a table that has over 1,000,000 records in it. You dont want to fetch the entire table into a dataset. Even with paging, it will still cause a performance lag, will it not ?Lets say there was a column that held last names. You could then divide up all the data in to alphabetical groups by letter. That will at least let you split up the data 26 different ways (letters in teh alphabet). Thats still roughly 38,000 possible records in the dataset at any given time. I suppose since the database and web server are very close to each other, physically, the latency shouldnt be too bad. However, Im worried about having several dozen or more users, each requesting datasets with tens of thousands of records. That would cause the memory use on the web server to spike most likely. Right now, its just one user do this sort of processing, but that might grow to include several dozens.ideas ?
In order to update a MSSQL table, named [Table_1]. The procedure is: (@id int,@Field0 nvarchar(1000) = NULL,@Field1 nvarchar(1000) = NULL,... ...@Field9 nvarchar(1000) = NULL)Method 1: UPDATE Table_1SET Field0 = CASE WHEN @Field0 IS NULL THEN Field0 ELSE @Field0 END, Field1 = CASE WHEN @Field1 IS NULL THEN Field1 ELSE @Field1 END, ... ... Field9 = CASE WHEN @Field9 IS NULL THEN Field9 ELSE @Field9 ENDWHERE id = @id Method 2 IF @Field0 IS NOT NULL UPDATE Table_1 SET Field0 = @Field0 WHERE id = @id ... ... UPDATE Table_1 SET Field9 = @Field9 WHERE id = @id Method 3: DECLARE @SQL nvarchar(max)DECLARE @NeedComma bitSET @SQL = 'UPDATE Table_1 SET 'SET @NeedComma = 0IF @Field0 IS NOT NULL BEGIN IF @NeedComma = 1 SET @SQL = @SQL + ', ' SET @SQL = @SQL + 'Field0 = @Field0' SET @NeedComma = 1 END... ...IF @Field9 IS NOT NULL BEGIN IF @NeedComma = 1 SET @SQL = @SQL + ', ' SET @SQL = @SQL + 'Field9 = @Field9' SET @NeedComma = 1 ENDSET @SQL = @SQL + ' WHERE id = @id'EXEC sp_executeSQL @SQL, N'@id int,@Field0 nvarchar(1000), ... ... , @Field9 nvarchar(1000)', @id = @id, @Field0 = @Field0, ... ... , @Field9 = @Field9
Let me see if I can explain what I'm trying to do (actually am doing now but with methods that I know can improve), and hopefully someone can give me some thoughts on the best way to do this (for maximum speed).
I've got data that comes from a couple of different sources that I'm updating and compiling nightly. On each file there can be different fields of data (some memo fields, some numbers, some text, etc. but all a subset of a master list of fields in my table). I then need to take that data and basically update my existing records (or insert new records if they don't exist based on an id which is in the incoming files). The current program does this all by looping through the data and creating sql statements for the inserts and updates. I think using SSIS or bulk inserts after writing my data to a file, i should be able to speed this up.
To me the "gotchas" are that each file may have different columns of data and I can't write different imports for each one. So I either have to have it be able to determine the columns for each piece of data and match when loading or updating or I could recode my program to basically insert the missing columns (should be doable).
Any thoughts on the best way to do it? Writing out to a file for SSIS to use but having it only write out new records and then doing updates through another method or ? I know SQL Server 2005 fairly well for basics on SQL but haven't used SSIS so will have to learn or outsource so any good starter points or tips would help. Seems the updates are where I'm a bit more confused on the very best way to do it.
I'm also stripping out html in one of the fields and creating a secondary field that doesn't have the html so I'm assuming the best is probably to do that while writing out the file I may use for whatever system but if there is a way to do it inside SQL or SSIS and make it happen quickly (so it doesn't lock the database) that would be great.