I've found myself acting as the database administrator for our organization despite never having any formal database training, so I have a few questions.
Those are some great questions, let me try to provide some insight on some of them:
Let us know if you have more questions. Thanks!
Just to add to George's answer:
Following the least privilege model is the most recommended approach - creating read-only users to read from specific schemas (Created by the "Create DB Users" tool and selecting a default schema in SMSS) can help segregate data if required.
The default role in SMSS "db_datareader" can be applied which matches permissions with the following documentation:
Thanks Gordon!
Regarding "selecting a default schema in SMSS," what schema would you select? From what I've gathered, dbo is not recommended. We are having some weird issues with that now. Our GISadmin user was previously a sysadmin, so it had the dbo schema applied. But according to ESRI tech support, this can cause problems. In our case we are getting an error when trying to publish our parcel fabric. The message says something along the lines of the connected geodatabase user "GISadmin" is not the branch version dataset's owner. I've done everything that I can think to resolve it but it seems like it being set as sysadmin has just ruined the login, at least for creating a parcel fabric. Tech support thinks we are most likely going to have to just delete the GISadmin user and create a new one. I'm sure this all stems from something I did wrong when setting it up the first time!
If you have a database user created via ArcGIS Pro called "GISOwner" - this will create a schema in your Geodatabase called GISOwner. Data loaded via the username GISOwner will then be within this schema.
If you'd like to create a read-only user for the data within this schema - Personally, I would create a user within SMSS (called GISReader), assign the default role of "db_datareader" and then assign the default schema to be "GISOwner".
This will allow you to build a database connection in ArcGIS Pro using the credentials for "GISReader" which will have no permissions for loading/modifying the data.
If the data is owned by DBO, then the user has to be DBO / Sysadmin to be the data's owner.
This is where using DBO can get tricky. The default schema should be "GISadmin" for that owner, not DBO or something else.
You may need to delete the parcel fabric, create a new data owner (parcel) then reload as that user. It would alleviate some of these issues.
I am not sure there is a simple "fix" for all of this.
Ok. So I do have an update but I'm just as confused as ever.
First, I deleted the parcel fabric from the enterprise database.
I used the "create database user" tool to create a new database authenticated user.
I went to SSMS to give that user the "db_owner" role
I then copied the parcel fabric from the file geodatabase to the enterprise geodatabase.
It copied fine, but now that feature dataset is prefixed with "TestGISadmin.ParcelFabric".
I have never seen this before. Every other feature class and dataset is prefixed with "DBO" Did I do something wrong?
I would prefer our enterprise data not be affiliated with a particular user so is there something that I can do to have it copied with the "DBO" prefix instead?
Giving a database user "db_owner" does not make them DBO when loading data. I would expect the data to be loaded as the data owner name.
If you need to have DBO, usually there is a user that has "SYSADMIN" server role.
Having the data associated with a specific user is not a bad practice and is something that we recommend in SDE geodatabases.
I guess what is confusing to me is that I was under the impression that we were using the DBO schema. I believe that when the Create Enterprise Geodatabase tool was ran, the option "SDE Owned Schema" was left unchecked. Wouldn't that mean that it would be using a dbo schema? Moreover, in the past, whenever I created any feature classes or datasets with my OS authenticated user, it still had DBO appended rather than my user name.
In this particular case, however, several threads like this one, have stated that Parcel Fabric owners can't use the DBO schema, but I've been unable to find anything about this in the official ESRI documentation.