sdelayer -o register doesn't work in this case because the view doesn't have a spatial column. From the docs: "Registers with ArcSDE a table having a spatial column".
If the view doesn't have a spatial column then there isn't any need to use any ArcSDE command-line utilities on it for any reason. 'sdetable -o create_view' exists exclusively for the creation of spatial views against layers with SDEBINARY/SDELOB geometry storage. All other views should be constructed using database tools (or database tool wrappers, like Create Database View (Data Management)). Spatial views constructed with SQL against ST_GEOMETRY or native geometry columns must be registered with ArcSDE before they can be used from ArcGIS for Desktop as simple feature classes (as opposed to Query Layers, which do not require registration). Views cannot be registered with the geodatabases as full feature classes because that requires an SDE-set registered rowid column, and views can only have USER-set rowids.
- V
If I don't register the view using the sdetable command, then I cannot publish the view in the ArcGIS server and query the data using the ObjectID column. Now that I've "tricked" the SDE into believing that my view is an SDE table, I can successfully query the data from the view using ArcGIS server.