In SQL Server, “schema-bound” refers to a specific feature that ensures a SQL object, such as a view or function, is tightly linked to the schema of the underlying tables or other database objects it references. When a view or function is schema-bound, the underlying tables or objects cannot be altered in a way that would break the view or function’s dependencies.
Continue readingCategory: SQL Server
Fix “The objects … in the FROM clause have the same exposed names” in SQL Server (Error 1013)
If you’re getting an error that reads something like “The objects “employees” and “employees” in the FROM clause have the same exposed names. Use correlation names to distinguish them’” in SQL Server, it could be that you’re trying to do a self-join without assigning table aliases.
When doing self-joins, we need to provide aliases for the tables so that SQL Server can distinguish between each instance.
To fix this issue, be sure to use unique table aliases in your query.
Continue readingHow to Log Data Changes with the SQL Server OUTPUT Clause
SQL Server has an OUTPUT
clause that we can use any time we do an INSERT
, UPDATE
, DELETE
, or MERGE
operation. It allows us to retrieve information from modified rows during such operations. This can be especially useful for auditing, logging, or understanding the impact of database changes without needing an additional query.
Let’s look at how the OUTPUT
clause can help us log the data changes in our database.
Using a CTE with a DELETE Statement in SQL Server to Remove Duplicates
Common Table Expressions (CTEs) are a nifty SQL feature that allow us to define a temporary result set, which can then be used in subsequent queries, including DELETE
statements. In the context of removing duplicate data, a CTE can be helpful when we want to identify and remove only the duplicated rows, keeping one version of each unique record.
Let’s go through a step-by-step example of using a CTE with a DELETE
statement to remove duplicate data.
Fix “Create View or Function failed because no column name was specified for column” in SQL Server (Error 4511)
If you’re getting an error that reads “Create View or Function failed because no column name was specified…” in SQL Server, perhaps you’re using a function or an arithmetic expression in the SELECT
list, but you haven’t provided a name for the column.
As the error message alludes to, you need to provide a column name when doing stuff like that.
Continue readingFix “Cannot create index on view because it contains the DISTINCT keyword” in SQL Server (Error 10100)
If you’re getting an error that reads “Cannot create index on view “demo.dbo.vDistinctPrice” because it contains the DISTINCT keyword…” etc etc in SQL Server, it appears that you’re trying to create an index on a view that contains the DISTINCT
keyword.
As the error message alludes to, this is not allowed.
Continue reading2 Ways to Check the Default Fill Factor in SQL Server
Fillfactor is an option that allows us to fine tune index data storage and performance in SQL Server. It determines the percentage of space on each leaf-level page to be filled with data, therefore reserving the remainder on each page as free space for future growth.
The default fillfactor can be set as a configuration option. SQL Server sets this value to 0
, and so this is what’s used when we create an index without specifying a fillfactor. However, it’s possible to change this value, and so at some stage we might want to check to see what the current value is.
Below are two ways to check the fill factor
configuration option.
Fixing Error 258 “Cannot call methods on nvarchar(max)” When a Subquery Uses FOR XML in SQL Server
If you’re running a subquery that uses FOR XML
to produce XML in SQL Server, but you’re getting error 258, which reads “Cannot call methods on nvarchar(max)” it might be that you’re trying to query the XML in the outer query, but your inner query isn’t outputting the XML as an actual xml type.
The FOR XML
result must be an xml type in order to process the result on the server.
To fix this issue, make sure the subquery outputs the result using the xml data type.
Continue readingHow to Disable an Index in SQL Server
Disabling an index in SQL Server can be a useful technique to improve the performance of bulk insert operations or when you need to perform maintenance on your database.
This article provides the code/syntax required to disable an index in SQL Server.
Continue readingFix Error “The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions…” in SQL Server (Error 1033)
If you’re getting an error that reads “The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified” in SQL Server, it appears that you’re using the ORDER BY
clause in a place that it must also be accompanied by a TOP
, OFFSET
or FOR XML
clause, but you’re not including one of those clauses.
To fix this issue, be sure to include one of those clauses in your query if you need to use the ORDER BY
clause.