How Can I Save Password For OLEDB Connections Of A Package On A Mssql-server?
Apr 18, 2008
I deployed a package on mssql-server.
How can I save passwords for OLEDB connections of the package?
I want to launch the package from server agent according to the schedule, but I don't know how can I save passwords for connectons?
Another requirement has cropped up with regard to picking up connection settings for data sources from an external File.
My source and target are both in SQL Server. What i need is that if my source or target changes I should just change my external file and same should reflect in my package.
How can I accomplish it? Please suggest some solution.
After I had transfered SSIS package to another PC I tried to open package and I got an error. ".. Failed to decrypt protected XML node "PackagePassword" with error . ". It turned out, that the password wasn't saved in a OLEDB connection manager of the Package. However "save password" options checked! But password field was empty.
As soos as I enter password the package executes successfully.
Question: How can I transfer a password for OLEDB Connection within a SSIS package to another developer's VS2005?
I have a package that is basically a container for using the Execute Package task to call many "child" packages. Each child package basically uses a data flow to move data from one database to another database on the same SQL Server. In the case of the child packages, I've used a combination of OLEDB and ADO.Net connections on the destinations. I ensured that all tasks and packages are set to TransactionOption.Supported and that the "parent" package has Required set at the package level. Anyway, the problem I'm finding is that one of the OLEDB connections is being blocked. When I look in SQL Server Activity Monitor I see that there are numerous ADO.Net connections that are on multiple processes (all belonging to these packages) even though when I check the Details, I can see that it has completed the final statement of the package the process belongs to. Thinking this may have been a multithreading issue, I changed MaximumConcurrentExecutables to 1 in all of the packages. Basically, even though all of the packages appear to have their own processes, when I look at the locks for the objects I'm working with, they all show up on the lowest process ID. My assumption here is that since the processID is associated with the first package, it is the "owner" of the transaction and even though the packages have their own processIDs, they show up on the first process because they're in the transaction. If I change the connection from OLEDB to ADO.Net, it resolves the issue and the blocking does not occur. So my question is, if I have an OLEDB connection manager and ADO.Net connection manager, can they share in the same transaction or are they in their own transactions?
I have a package protected by a password - I am already unhappy that to get it to use the configuration file to change connection strings for the production servers I have had to hardcode the password into the config file - very insecure! However, the package now deploys correctly to the production server and will run from there OK, but NOT if scheduled as a SQL Server Agent Job. Thus is because however often I edit the command line to include the password after the DECRYPT switch (which it has prompted me for when I click on the command line tab), the Job Step will not retain it. If I open it up after I have edited it and closed it, the password has disappeared.
I know that if I run dtexec plus the code in the Command Line tab (with the password), the package runs OK.
This is driving me insane! I have read all the other posts and so I tried replacing the SSIS package step with a CmdExec step and pasting that code into there - then I get an OLEDB error..
The code I use is: DTEXEC /SQL "ImportRateMonitoringTables" /SERVER servername /DECRYPT password /CONFIGFILE "D:Microsoft SQL ServerSSISDeploymentsRateMonitoringImportTasksDeploymentImportRateMonitoringTables_Production.dtsConfig" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING E
and I get
SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x8000FFFF
although the same code executes perfectly from a command prompt.
Please does anyone have any experience with a similar problem and if so, how did you get round it?
Hi there, Here we have got a asp.net application that was developed when database was sitting on SQL server 6.5. Now client has moved all of their databases to SQL server 2000. When the database was on 6.5 the previous development team has used oledb connections all over. As the databases have been moved to SQL server 2000 now i am in process of changing the database connection part. As part of the process i have a login authorization code. Private Function Authenticate(ByVal username As String, ByVal password As String, ByRef results As NorisSetupLib.AuthorizationResult) As Boolean Dim conn As IDbConnection = GetConnection() Try Dim cmd As IDbCommand = conn.CreateCommand() Dim sql As String = "EDSConfirmUpdate" '"EDSConfirmUpdate""PswdConfirmation" 'Dim cmd As SqlCommand = New SqlCommand("sql", conn)
cmd.CommandText = sql cmd.CommandType = CommandType.StoredProcedure NorisHelpers.DBHelpers.AddParam(cmd, "@logon", username) NorisHelpers.DBHelpers.AddParam(cmd, "@password", password) conn.Open() 'Get string for return values Dim ReturnValue As String = cmd.ExecuteScalar.ToString 'Split string into array Dim Values() As String = ReturnValue.Split(";~".ToCharArray) 'If the return code is CONTINUE, all is well. Otherwise, collect the 'reason why the result failed and let the user know If Values(0) = "CONTINUE" Then Return True Else results.Result = Values(0) 'Make sure there is a message being returned If Values.Length > 1 Then results.Message = Values(2) End If Return False End If Catch ex As Exception Throw ex Finally If (Not conn Is Nothing AndAlso conn.State = ConnectionState.Open) Then conn.Close() End If End Try End Function ''' ----------------------------------------------------------------------------- ''' <summary> ''' Getting the Connection from the config file ''' </summary> ''' <returns>A connection object</returns> ''' <remarks> ''' This is the same for all of the data classes. ''' Reads a specific connection string from the web.config file for the service, creates a connection object and returns it as an IDbConnection. ''' </remarks> ''' ----------------------------------------------------------------------------- Private Function GetConnection() As IDbConnection 'Dim conn As IDbConnection = New System.Data.OleDb.OleDbConnection Dim conn As IDbConnection = New System.Data.SqlClient.SqlConnection conn.ConnectionString = NorisHelpers.DBHelpers.GetConnectionString(NorisHelpers.DBHelpers.COMMON) Return conn End Function in the above GetConnection() method i have commented out the .net dataprovider for oledb and changed it to .net dataprovider for SQLconnection. this function works fine. But in the authenticate method above at the line Dim ReturnValue As String = cmd.ExecuteScalar.ToString
for some reason its throwing the below error. Run-time exception thrown : System.Data.SqlClient.SqlException - @password is not a parameter for procedure EDSConfirmUpdate. If i comment out the Dim conn As IDbConnection = New System.Data.SqlClient.SqlConnection and uncomment the .net oledb provider, Dim conn As IDbConnection = New System.Data.OleDb.OleDbConnection then it works fine. I also have changed the webconfig file as below. <!--<add key="Common" value='User ID=**secret**;pwd=**secret**;Data Source="ESMALLDB2K";Initial Catalog=cj_common;Auto Translate=True;Persist Security Info=False;Provider="SQLOLEDB.1";' />--> <add key="Common" value='User ID=**secret**;pwd=**secret**;Data Source="ESMALLDB2K";Initial Catalog=cj_common;' />
I have recently changed my NT password and since then one of my machines has not been able to start MSSQL server. When I re-boot the machine it lets me know that it was unable to start MSSQL server. If I right click on the SQL server group in EM and try to manually start the service, it tells me that I have a login failure. I don't understand how changing my NT password would affect one machine and not the others. When I right click on the "edit SQL service registration properties" tab, all of the machines are using the NT password selection as opposed to the SQL server authentication password. Any ideas would be greatly appreciated
The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.
------------------------------
The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.
------------------------------ BUTTONS:
OK ------------------------------
===================================
Could not save the package "C:copiaPackage.dtsx" to SQL Server "ATLANTE". (Package Installation Wizard)
===================================
The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.
The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.
A friend of my self asked me how he can save a password not as clear text. He wanted to encrypt the password and save the encrypted string in the database.
How can he do this. I heard from somebody that he might do this with SSIS. Unfortunately I doesn't understand what he ment. Maybe somebody can help me here.
I have a USERS table on an SQL Server 2000 with two fields, USER_NAME AND PASSWORD, and I want to encrypt the passwords when I stored them on the table. I used {Encrypt N ‘MyPassWord’} to encrypt the password and it looks that the passwords have been encrypted.
Went, however, I execute a SELECT statement for a specific password all passwords are returned.
This is a small sable code: ------------------------------------------------------------------------------------------------ CREATE TABLE dbo.Users ( User_Name nvarchar (10) NOT NULL , PassWord nvarchar (50) NOT NULL )
GO
INSERT INTO USERS (User_Name, PassWord) VALUES ('MyName', {Encrypt N 'MyPassWord'})
GO
INSERT INTO USERS (User_Name, PassWord) VALUES ('YourName', {Encrypt N 'YourPassWord'})
GO
SELECT * FROM USERS WHERE PassWord = {Encrypt N 'MyPassWord'}
(2 row(s) affected) ------------------------------------------------------------------------------------------------- Unfortunately both (All) rows are return
Is it any way to encrypt password and be able to select them? Is it any other way to encrypt data into the database?
I'm having an issue with an SSIS package. It supposed to run on a schedule and pull data from one server (SQL1) to another (SQL2). Unfortunately, I'm using a shared server and I'm not that admin. So I'm limited to what I can try. According to the admin, my package is not retaining the password when I build it. It runs fine in debug mode on my machine, but will not run on his. I found this link...
... and tried it. It describes how to create an XML for validation. Still no good. He sent a screenshot indicating error code: DTS_E_CANNOTACQUIRECONNECTION and OLE DB Source failed validation. In effect, login failed for SQL1 and it could not pull data.
Hello, I need some help with installing release copies of SQL05(+SSIS) and VS05 on Win03R2. It is very frustrating when a basic install fails. I€™ve been going round and round with this. M$ support has not been of help yet.
I have a new development box for SQL05/VS05 development, and when I do a clean install of release software from MSDN: Windows Server 2003 R2 ent; SQL Server 2005 dev; Visual Studio 2005 pro I find that the "save to server" in SSIS (and other utilities that save a package) fails with a non-informative message *No Description Found* (see error text below).
To setup this box I install Win03R2 first, promote it to a Active Directory DC (the one and only DC in a test forest), then install VS05 onto the E: drive. Note, I must install VS05 first (before SQL05) so that all components get installed to the RAID5 *E:* drive. If SQL05 is installed first then VS that comes with SQL gets installed on to C: (no way I see to get around this) then the full VS05 pro gets forced to install on the C: drive.
Then I install SQL05 (with everything including SSIS). At this point every thing works fine, packages can be saved ok.
If I then install VS05 again so that all settings of VS05 are as expected of a standard VS05 install (not the SQL version) then the problem with saving packages arises.
If the error message was a little more informative, I might be able to track down the source of the problem. Please help! I have tried a bunch of things - creating credentials, proxies, using the most privileged accounts possible, etc.
Thanks, MikeC
Error from create SSIS package (save to server): ===================================
No description found (Microsoft Visual Studio) ------------------------------ Program Location: at Microsoft.SqlServer.Dts.Runtime.Application.SaveToSqlServerAs(Package package, IDTSEvents events, String packagePath, String serverName, String serverUserName, String serverPassword) at Microsoft.DataTransformationServices.Controls.PackageLocationControl.SavePackage(Package package) at Microsoft.DataTransformationServices.Design.Controls.PackageSaveCopyForm.PackageSaveCopyForm_FormClosing(Object sender, FormClosingEventArgs e)
===================================
Error from copy db wizard: ===================================
No description found (Copy Database Wizard) ------------------------------ Program Location: at Microsoft.SqlServer.Dts.Runtime.Application.SaveToSqlServerAs(Package package, IDTSEvents events, String packagePath, String serverName, String serverUserName, String serverPassword) at Microsoft.SqlServer.Management.CopyDatabaseWizard.PackageCreator.SavePackage()
I am creating SSIS packages on the fly using C#.net. I need to save SSIS packages on a SQL Server using windows authentication. I have found a way to save the package using SQL authentication Microsoft.SqlServer.Dts.Runtime.Application .SaveToSqlServer(Package pkg,IDTSEvents evts,string serverName,string serverUserName,string serverPassword)
Can you give me a solution for saving SSIS packages using windows authentication, as it is a must in my project.
I'm stuck with a very annoying problem - any help would be greatly appreciated.
I created a package using Business Intelligence Project. The package reads from a Flat File source and saves to a SQL Server table.
The package has a Data Source for the database connection. In this I have opted to save the password.
When I run the package in VS on my machine it works fine.
I then deployed the package to our SQL 2005 database server using the Deployment Utility. It then appeared in the MSDB section.
I then tested the package ran from my machine using Management Studio and all was fine.
However, if I try to run the package from the database server itself I run into problems. Specifically, the log gives me the following error: "The AcquireConnection method call to the connection manager "<My Database>" failed with error code 0xC0202009" ....and further down I get: "Error: an OLE DB error has occurred. Error code: 0x80040E4D. An OLE DB record is available. Source "Microsoft SQL Native Client" Hresult 0x80040E4D Description: "Login failed for user 'sa'.".
What seems to be happening is the password is not being saved in the connection string. Sure enough, if I look at the Connection Managers section of the Execute Package Utility in Management Studio, then my database connection manager has only a User ID specified and no "pwd=". If I add "pwd=<my password>" to this connection string here then the package works.
How do I get this password to be remembered by the Package?
Incidentally, I have also tried writing a VB.NET program to call the package programmatically. Using this, I have tried to set the connection string of my Data Source in the code to try to get round the problem above. However, even after this I still find the only machine the package runs on is mine, and everywhere else it fails to connect.
Hm... I use SSIS packages to manipulate some data from one SQL server to another. I chosed "DontSaveSensitiveData" and I am using a XML configuration file.
The problem is I have to edit the file with notepad manually and add the password for my SQLconnections in it.
Is it possible to do this from the Business Intelligence Studio instead?
I tried to edit the connections and set and save password there but it won't save it to the XML configuration file.
Or perhaps it is intended to be edited in notepad and passwords set manually to it?
I have a big problem. Im writing an application in Sql 2005 Etl. This application use 2 kind of ole db connection. One towards a Sql Server, and the other towards As400 to use ole db towords As400 is necessary to save user and password to connect. There is a flag to save password.........and obviously a checked it. !!!!!
The problem is: If I stay inside Visual studio and i use this application.......all is correct. If I use my application in sql like a job.........loose password information and crash immediatly
I am working with the ssis packages.I am working in the development enviroment.Once i place them on the server all my connection to text files fails.I dont want to sit and Keep changing with respect to server again and again.
What is the best way to set connection like for example:in my development it can be on e:data folder But on server F:Data With me changing again and again, can this be set within the package in the development environment.
I'm creating an xml configuration file to hold the connection string including the password (sql server authentication). My package protection level is set to 'EncryptSensitiveWithPassword'. I set up my connection manager and I check the 'Save my password' box. The 'Test connection' button reports that the connection is OK. I enable the package configurations and I go through the Package Configuration Wizard and I specify 'xml configuration file' and I choose 'Specify configurations settings directly' and I specify a configuration file name with the same directory as the package. I check the 'ConnectionString' property and the 'Password' property and then click 'Close'. Then I save my package changes. Now I look at the xml configuration file in a text editor and I see the Password property has an empty element:
<ConfiguredValue></ConfiguredValue>
Is it supposed to be empty? When I right-click the package in solution explorer and pick 'Reload with upgrade' then I have to enter the password, but the validation fails with 'Acquire connection' error. Should I just be saving the 'Connection string' property, or should I save all the connection elements (i.e. ServerName, UserName, Password etc.)? If I edit the xml configuration file and I type the password into the <ConfiguredValue> element above, and then I do 'Reload with upgrade', then the 'Acquire connection' validation error goes away. Could this mean that I am not able to encrypt the password? Thanks.
Dear All, I want to make an application to manage my documentation. But I would like to store all my document's into MS SQL data base, and load it from each client in our intranet. So how can I do it? 1. Which type of data type should I set for my table field on MS SQL, and how can I load an Word file from selected directory and store it then in my table field? 2. How can I load it from MS SQL and send it to client? Thanks a lot for any examples, links or documentation! les
Something a little wride mysterious is happening with my package when I deploy it to run at the SSIS server instance. Everytime that I try to deploy it (from my local development environment) to SSIS server, my package is not keeping its database user and password.
As the database user and password are the same one we dont need to use the XML setting to keep these data there.
So, does anyone know what could be happening with my package and/or my deployment?
I have SQL Server 2000 the Microsoft SQL Enterprise Mangaer version 8.0 and I don't know the password of sa account and I found this page where it shows how to change it and I tried it but it didnt work for me. Password didnt change So what to do? Is there any way to see the current pw?
i Have this stored procedure below that creates a backujp copy of tblpersons from database db1 into another database db2 with a table1 pressing f5 to create it it goes fine up to around 5 seconds and after that the error below appears and looking at the stored procedure it is not created either. I already activated the default settings SQL Server to allow remote connections but still the error appears.
CREATE PROCEDURE makebackup BEGIN SELECT * INTO table1 FROM sql1.database1.dbo.tblpersons END GO
OLE DB provider "SQLNCLI" for linked server "amps" returned message "Login timeout expired". OLE DB provider "SQLNCLI" for linked server "amps" returned message "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.".
Msg 126, Level 16, State 1, Line 0 VIA Provider impossible to find the module
dear list can anyone figure out a workaround as to why OLEDB Provider MSDORA cannot store passwords I have all the info stored in a table (Project Real Best Practise) The user id I have stored in string ConfiguredValue gets transfered to OLEDB Provider MSDORA named (SQL_REAL_Source_myoradb) but not the password To workaround this bug only with MSDORA can aynonne sugest a setting I should use in package security ie the default is EncryptSensitiveWithUserKey?
thanks Dave
CREATE TABLE [admin].[Configuration]( [ConfigurationFilter] [nvarchar](255) NOT NULL, [ConfiguredValue] [nvarchar](255) NULL, [PackagePath] [nvarchar](255) NOT NULL, [ConfiguredValueType] [nvarchar](20) NOT NULL ) ON [PRIMARY]
Hello:I didn't find any documentation that notes save point names are casesensitive, but I guess they are...Stored Proc to reproduce:/* START CODE SNIPPET */If Exists (Select * From sysobjects Where Type = 'P' and Name ='TestSaveTran')Drop Procedure dbo.TestSaveTranGoCreate Procedure dbo.TestSaveTranAsBeginDeclare@tranCount int--Transaction HandlingSelect @tranCount = @@TRANCOUNTIf (@tranCount=0)Begin Tran localtranElseSave Tran localtranBegin Try--Simulate Error While ProcessingRAISERROR('Something bad happened', 16, 1)/*If this proc started transaction then commit it,otherwise return and let caller handle transaction*/IF (@tranCount=0)Commit Tran localtranEnd TryBegin Catch--Rollback to save pointRollback Tran LOCALTRAN --<< NOTE case change--Log Error--Reraise ErrorEnd CatchEndGo--Execute Stored ProcExec dbo.TestSaveTran/*Should receive the following message:Cannot roll back LOCALTRAN. No transaction or savepoint of that namewas found.*//* END CODE SNIPPET */What is really strange, if there is a transaction open, then no erroris thrown. So if you execute as so:/* START CODE SNIPPET */Begin Tran--Execute Stored ProcExec dbo.TestSaveTran/* END CODE SNIPPET */There is no "Cannot roll back LOCALTRAN...." message.Questions:1-)Can someone confirm save point names are case sensitve and this isnot happening because of a server setting?2-)Is this a logic error that I am not seeing in the example codeabove?We have changed our code to store the save point name in a variable,which will hopefully mitigate this "problem".Thx.
I had just installed SQL 2005 dev on my laptop and got an error message when I tried to create a package using the BI IDE. I received the same error using VS2005 IDE. But the project was created regardless without any packages. When I tried to create a new package in the project, I received the same error again, but with an option to view the error details.
Following is the text of the error details:
TITLE: Microsoft Visual Studio ------------------------------
I dont know how to arrange situation when application enduser needs to access data in two databases of mssql server concurently in those circumstances that access rights to the data should be restricted by password protected role (whose password is not known to the end user).
Detailed description of problem:
So far there was an application, that manipulated its data, saved in mssql server's database. End user authenticates to application by his (mssql server's) login name and password. The application authenticates the user by connecting to the database with the given name/password credentials, and then the application sets application role with hardcoded name/password. Thus application role sets the access rights for consequent end user's requests, delivered via application to the database server.
The goal is that end user cannot manipulate application database data when connects to the database by other means (e. g. via SQL server Manager), because he does not know the application role's password.
Now suppose that there are two applications (A1, A2), both using the same model for access restrictions. Each of them has its own database (A1DB, A2DB) and its own application role (A1R residing in A1DB, A2R residing in A2DB). End user (login) X can manipulate A1DB data when connects via A1, and A2DB data when connects via A2, and NO data when connects by other means.
Finally suppose that some subset of A2 data (let's say one table) is useful to see also via A1 application. There is no problem to add to A1DB view, that shows data from A2DB table together with A1DB tables. But when the user is connected via A1, he cannot see the data, because query on A1 view fails (user has not access rights on A2 data).
The access rights for A1 enduser cannot be set by no means i know because:
1) I cannot set the rights via public (guest) access because in that case they will be accessible to any users connected by any third party products, which is supposed to be security hole.
2) I cannot set the rights via dbuser or dbrole privileges, because they will not work when connected via A1 application (setting the app role suppresses the db privileges)
3) I cannot set the rights via application role because two application roles cannot be set concurrently.
4) I cannot abandon using application roles mechanism and use database roles mechanism, because db roles cannot be protected by independent password (not known to the enduser).
Please can anybody review my problem and either find the mistake in my approach, or propose other solution? So far I suppose the problem is my ignorance, because I am not great mssql expert.
I have a server with MSDE 2000 installed onto it. I also installed SQLEXPR_TOOLKIT.EXE . Now there is a DTS package present on that server saved in the DB. How can I alter that package? And if that's not possible: how can I save the package to a file so I can transfer that file to my development machine?