Question:
I am a fairly new geodatabase administrator and am running into an issue regarding the geodatabase owner. I was told that the geodatabase is owned by/uses an 'SDE' schema, yet all the layers therein are prefixed with 'DBO', as in 'database.DBO.parcels'. If SDE was used, then wouldn't all the layers be prefixed with 'SDE'?
When I try to publish a layer topology, the analysis fails and throws a warning that the connected user 'SysAdmin' is not the dataset's owner, 'DBO'.
I do not have any 'DBO' user credentials, so I'm wondering if our IT department/SQL Database Administrator is mistaken. Is there a way to definitively tell with which user/schema the geodatabase was set up as?
Thanks,
Greg
A geodatabase admin and data owner are two separate users in most circumstances. Is your db user name sysadmin? sa? for the failed publish attempt?
If your data is database.DBO.parcels, this likely means that your account that you login in (and created the data) with has sysadmin server role at the login level. This will automatically map your login to the DBO schema in SQL Server.
Now, your enterprise geodatabase can still be owned by the SDE user. You can confirm this by checking who owns the Default version. Right click DB connection and go the administration --> versions. What is the user that owns Default? This will tell you what schema owns the geodatabase repository tables.
Marlon
@GregCarlino2 - the ArcSDE Geodatabase Repository can be owned by "DBO" or by the user named "SDE".
read more here Create Enterprise Geodatabase (Data Management)—ArcGIS Pro | Documentation
My recommendation is to avoid the "DBO" and always use the "SDE" user.
"SDE" user that owns the ArcSDE Repository allows a much better control of permissions and privileges.
That's why I always recommed my customers to use "SDE" and avoid the "DBO" owned ArcSDE Repository.
After the ArcSDE repository is created, then you need to create a data owner user to load the data.
The best practice is to not use the SDE user to load data, the SDE user is the ArcSDE Repository Owner and the SDE user needs to be used only for Geodatabase Administrative tasks, like the Geodatabase Compress.
After the data is loaded with the Data Owner user and the data is registered as versioning, geodatabase archiving enabled, etc. then you can create database roles to grant permission for Editor Users and Viewer Users to access the data.
You can learn more about this if you read my database guide book for Production Mapping in the link below and you can download my database template scripts that show more details how to setup the SQL Server Geodatabase.
Mapping and Charting Solutions (MCS) Enterprise Databases Best Practices (esri.com)
Also, read the database connections best practices.
I hope this helps.
@GregCarlino2 "When I try to publish a layer topology, the analysis fails and throws a warning that the connected user 'SysAdmin' is not the dataset's owner, 'DBO'. "
if your domain login is a member of the db_owner role in the SQL Server database or if your domain login is a member of the SQL Server sysadmin role then your user will be able to access the geodatabase and make changes, etc.
The ArcGIS Server Windows Service must be running under a domain account and that domain account must be added to the SQL Server Database and granted the proper privileges for ArcGIS Server to be able to access the data in the SQL Server database.
If you have ArcGIS Server on Linux then you will not be able to do this unfortunately.
You will need to change your SQL Server Geodatabase to use the ArcSDE Repository owned by the SDE user and create the data owner user and editor/viewer users as I have mentioned in my previous reply.
I hope this clarifies your question.