Community
Showing results for 
Search instead for 
Do you mean 
Reply

Login failed for user ACTACCESS on Windows Server 2012 Essentials

Accepted Solution Solved
Highlighted
Copper Contributor
Posts: 23
Country: United States
Accepted Solution

Login failed for user ACTACCESS on Windows Server 2012 Essentials

I'm trying to move/upgrade from an ACT 2011 Premium database on SBS 2003 to a new install of ACT 2013 Premium on Windows Server 2012 Essentials. There seems to be an issue with the SQL Server setup. When I try to initiate the database restore, I get an Act.Data.DatabaseAccessException error with the message "Login failed for user 'ACTACCESS'." (See full error below.)

 

I have already tried completely uninstalling ACT and SQL Server 2008 R2 Express and reinstalling, and I end up with the same issue.


If I run actdiag, I get the following error:

 

---------------------------

---------------------------
Could not connect to the SQL Server Instance.

Click OK to continue anyway, Cancel to close.
---------------------------
OK Cancel
---------------------------

 

... and in the main ACT! Diagnostics screen I see the same login error at the bottom.

 

I have also used SSMS to look at the server instance. There is a login for ACTUSER, but not for ACTACCESS, ACTADMIN, or any others.

 

I have tried a few variants of running SecurityCmdLnApp.exe as well as a "ResetSQL" script I got from the knowledgebase.

 

What should I do next?

 

 

 

Here is the full text of the error I get:

 

---------------------------
Sage ACT!
---------------------------
Act.Data.DatabaseAccessException: Failed to open a connection to the database. ---> Act.Data.ActDb.ActDbException: Login failed for user 'ACTACCESS'. ---> System.Data.SqlClient.SqlException: Login failed for user 'ACTACCESS'.
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover)
at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions)
at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnectionOptions userOptions)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
at System.Data.SqlClient.SqlConnection.Open()
at Act.Data.ActDb.ActDbConnection.Open()
--- End of inner exception stack trace ---
at Act.Data.ActDb.ActDbConnection.Open()
at Act.Data.CommandProcessor.GetActiveConnection(String connectionString)
at Act.Data.CommandProcessor.Execute(Command command, IDataReader& dataReader)
--- End of inner exception stack trace ---
at Act.Data.CommandProcessor.Execute(Command command, IDataReader& dataReader)
at Act.Framework.Security.SessionManager.GetActAccessPassword(String host, ProviderType provider)
at Act.Framework.ActDatabase.ActDatabaseManager.ClassicRestoreDatabaseAs(String databaseName, String databaseHost, String databaseType, String newTargetFolder, String userLogOn, String userPassword, String zipFile, String zipPassword, ProgressEventHandler progressHandler, Boolean shareDatabase)
at Act.Framework.ActDatabase.ActDatabaseManager.RestoreDatabaseAs(String databaseName, String databaseHost, String databaseType, String newTargetFolder, String userLogOn, String userPassword, String zipFile, String zipPassword, SupplementalFileManager sfMgr, ProgressEventHandler progressHandler, Boolean shareDatabase)
at Act.Framework.ActFramework.RestoreDatabaseAs(String databaseName, String databaseHost, String databaseType, String newTargetFolder, String userLogOn, String userPassword, String zipFile, String zipPassword, ProgressEventHandler progressHandler, Boolean shareDatabase)
at Act.UI.MaintenanceManager.RestoreDatabaseAsTask.DoTask()
---------------------------
OK
---------------------------


Accepted Solutions
Highlighted
Solution
Accepted by topic author holisticdeveloper
‎09-25-2015 03:20 AM
Copper Contributor
Posts: 23
Country: United States

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

I found that the contributing factor was the password policy enforced by the Office 365 integration component for Windows Server 2012 Essentials. I was able to workaround it by pre-creating the SQL Server logins below using SQL Server Management Studio, choosing the option to not enforce the password policy. Then the "SecurityCmdLnTool" app was able to modify the passwords to whatever it needed them to.

 

Note: even though I had turned off the password policy using Group Policy, there was still an additional "password filter" that was the conflict. You can see what password filters are installed on your system using information from the following page:

http://msdn.microsoft.com/en-us/library/ms721766(VS.85).aspx#password_filter_functions

 

SQL accounts I created:

  • ACTADMIN
  • ACTOLEDB
  • ACTACCESS
  • ACTQUERY
  • ACTREADER
  • ACTREPORT
  • ACTSYNC
  • ACTUSER

View solution in original post


All Replies
Highlighted
Silver Super Contributor
Posts: 2,342
Country: USA

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

There is an option to reset the users in actdiag. Give that a try.

Stan

If you would like to get more out of ACT! you can find an ACT! Certified Consultant near you by going to:www.act.com/acc.
-------------------------------------------------------------------------------------
Stan Smith
ACT! Certified Consultant
ADS Programming Services, Inc.
(205) 222-1661
www.adsprogramming.com
www.actwebhosting.com
Click Here to Purchase Act!
Highlighted
Copper Contributor
Posts: 23
Country: United States

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

I found the option called "Set up ACT! SQL Users." It ran without an error, but I still have the same problem with restoring the database.

Highlighted
Solution
Accepted by topic author holisticdeveloper
‎09-25-2015 03:20 AM
Copper Contributor
Posts: 23
Country: United States

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

I found that the contributing factor was the password policy enforced by the Office 365 integration component for Windows Server 2012 Essentials. I was able to workaround it by pre-creating the SQL Server logins below using SQL Server Management Studio, choosing the option to not enforce the password policy. Then the "SecurityCmdLnTool" app was able to modify the passwords to whatever it needed them to.

 

Note: even though I had turned off the password policy using Group Policy, there was still an additional "password filter" that was the conflict. You can see what password filters are installed on your system using information from the following page:

http://msdn.microsoft.com/en-us/library/ms721766(VS.85).aspx#password_filter_functions

 

SQL accounts I created:

  • ACTADMIN
  • ACTOLEDB
  • ACTACCESS
  • ACTQUERY
  • ACTREADER
  • ACTREPORT
  • ACTSYNC
  • ACTUSER
Highlighted
Copper Super Contributor
Posts: 91
Country: USA

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

Hello,
I am facing the same issue. I tried to create these user but I still have an SQL error in the log: "Password did not match for the login provided".
I assume it has to do with your other comments "SecurityCmdLnTool" or "there was still an additional "password filter" that was the conflict".

Could you please elaborate on this? I have been stuck way to long on this..

Thank you!
Highlighted
Copper Contributor
Posts: 23
Country: United States

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

Hi Greg,

 

The SecurityCmdLnTool.exe file should exist in C:\Program Files (x86)\Act\Act for Windows\ directory. After creating the SQL accounts, just double-click this app. (Or, you might need to right-click and run as administrator -- I don't recall.) This should set the right passwords on the accounts I listed that will allow Act to run.

 

Regarding the password filter... The MSDN article I referenced indicates that all password filters are listed in the registry entry HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages. In my case, there is an item in this list for "pwdfilt" which is from the Office 365 plugin. I don't recall trying this, but I think if you temporarily removed "pwdfilt" from the Notification Packages entry, that the Act setup process would be able to properly create the accounts from the beginning.

 

Hope this helps -- it's been a while since I had to deal with this!

Highlighted
Copper Super Contributor
Posts: 91
Country: USA

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

Thank you.
I had to run that tool after I installed SQL Server and Act. I closed Act, reset the SA password through SQL Management Studio and then run that tool. I did not have to touch to the password filter.
Thanks for getting back!
Highlighted
New Member
Posts: 2
Country: United_Arab_Emirates

Re: Login failed for user ACTACCESS on Windows Server 2012 Essentials

In Sql Server, user accounts and credentials are set at the server level, not at the database level. When you deploy an SQL database, only the database info moves over. You need to connect to the Database Server in your deployed environment , set up the username and password you want to use, and give the account appropriate permissions into the database. Login failed for User is a general sql error message and may have several causes. So, first you have to make sure that the user exist on SQL Server , that the user is enabled, and has access (mapped) to the correct database.

 

  • In most cases, just set "Integrated Security=False" and it will work.
  • Make sure that you have the Mixed-Mode authentication enabled and here is how to enable it.

 

Also, either one of three things you will need to do to correct this issue:

 

  • Add the user used by the worker process to the SQL database and assign the appropriate permissions.
  • Change the Connection String to use a predefined user name and password.
  • Change the Anonymous authentication credentials or the credentials used by the worker process.