Subject | Re: Embedded Firebird 2.0.1 on Windows 2003 Terminal server |
---|---|
Author | jasonw3877 |
Post date | 2007-04-09T17:02:24Z |
I have discovered what caused the problem. I'm not sure where it needs
to be posted because I think it might be related to the .Net Firebird
provider, but I'm not sure. The issue is with permissions on the
terminal server specifically. Apparently, when connecting to the
embedded database, a file mapping is created in the global objects
cache. For a terminal server user to be able to do that, they need the
"Create Global Objects" permission. I discovered this in this article
from Microsoft:
http://msdn2.microsoft.com/en-us/library/aa366537.aspx
According to
http://207.46.196.114/WindowsServer/en/library/fa01a57a-a0ef-4cb9-af9a-f30182a25bf71033.mspx
the "Create Global Objects" permission is recommended for the
Administrators group and the Local System group.
To help anyone who might run into this problem in the future, these
are the steps I followed to enable this permission:
1. Open Administrative Tools -> Local Security Settings on the
terminal server.
2. Under "Create global objects" make add the users or groups that you
want to run the embedded server.
I'm not sure if the embedded server needs to create global objects.
Would it be possible to use local objects under an embedded
application since only one process can have access to the database? Is
there something I can do when connecting to the Firebird database to
not use global memory objects?
to be posted because I think it might be related to the .Net Firebird
provider, but I'm not sure. The issue is with permissions on the
terminal server specifically. Apparently, when connecting to the
embedded database, a file mapping is created in the global objects
cache. For a terminal server user to be able to do that, they need the
"Create Global Objects" permission. I discovered this in this article
from Microsoft:
http://msdn2.microsoft.com/en-us/library/aa366537.aspx
According to
http://207.46.196.114/WindowsServer/en/library/fa01a57a-a0ef-4cb9-af9a-f30182a25bf71033.mspx
the "Create Global Objects" permission is recommended for the
Administrators group and the Local System group.
To help anyone who might run into this problem in the future, these
are the steps I followed to enable this permission:
1. Open Administrative Tools -> Local Security Settings on the
terminal server.
2. Under "Create global objects" make add the users or groups that you
want to run the embedded server.
I'm not sure if the embedded server needs to create global objects.
Would it be possible to use local objects under an embedded
application since only one process can have access to the database? Is
there something I can do when connecting to the Firebird database to
not use global memory objects?
--- In firebird-support@yahoogroups.com, "jasonw3877" <jasonw@...> wrote:
>
> I recently upgraded our internal application from Firebird 1.5.x to
> Firebird 2.0.1. I am using the embedded Firebird server with the
> application. The application runs just fine on Windows XP machines,
> but when trying to run it on our Windows 2003 terminal server, I get
> the following exception:
>
> STACK TRACE: FirebirdSql.Data.FirebirdClient.FbException: operating
> system directive CreateFileMapping failed --->
> FirebirdSql.Data.Common.IscException: Exception of type
> 'FirebirdSql.Data.Common.IscException' was thrown.
> at
> FirebirdSql.Data.Client.Embedded.FesDatabase.ParseStatusVector(Int32[]
> statusVector)
> at
>
FirebirdSql.Data.Client.Embedded.FesDatabase.Attach(DatabaseParameterBuffer
> dpb, String dataSource, Int32 port, String database)
> at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
> --- End of inner exception stack trace ---
> at FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()
> at FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create()
> at FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()
> at FirebirdSql.Data.FirebirdClient.FbConnection.Open()
> at Brashers.E_CR_DataObjects.CannedNote.InsertDownloaded()
>
> The interesting thing about the problem is that it goes away if I run
> the application with administrator rights. I've been looking all over
> the web this morning trying to figure out what could be the problem,
> but have had no luck. Is there some security tweak I need to make to
> our terminal server to allow the embedded database to run? Any help
> would be greatly appreciated.
>