Your layer is a query layer defined by a complex SQL query, and you are publishing to ArcGIS for Server.
Solution
- One way to maintain your query for the layer you want to publish is to create a view. A view is a stored query that selects data from specified tables.
Learn more about views and creating a database view in ArcGIS for Desktop
- Or, you could change the SQL query so that it is no longer complex. The query should be simple. A common example would be as follows: SELECT * FROM Test.dbo.US_States.
- Alternatively, you can remove the layer if it is not needed.
More information
Publishing to ArcGIS for Server requires that the SQL query defining the query layer be simple. A common example would be as follows: SELECT * FROM Test.dbo.US_States. A simple query can contain a subset of the fields in the table, for example, SELECT objectid, shape FROM Test.dbo.US_States. WHERE clauses and joins are unsupported when publishing. For instance, you cannot publish a query layer where you are selecting a subset of rows in a simple query because that is controlled by the WHERE clause.
A query layer is a layer or stand-alone table that is defined by an SQL query. Query layers allow both spatial and nonspatial information stored in a DBMS to be easily integrated into GIS projects within ArcMap. Since query layers are using SQL to directly query database tables and views, spatial information used by a query layer is not required to be in a geodatabase.
When working in ArcMap, you create query layers by defining an SQL query. The query is then run against the tables and views in a database, and the result set is added to ArcMap as a layer or stand-alone table (depending on the query).
Learn more about query layers and creating a query layer
Learn more about authoring feature services for ArcGIS for Server