What are DMVs?
Dynamic management views (DMVs) and functions return
server state information that can be used to monitor the health of a server
instance, diagnose problems, and tune performance; that is, they let you see
what is going on inside SQL Server. They were introduced in SQL Server 2005 as
an alternative to system tables. One example is viewing operating system wait
statistics via this query:
SELECT
* FROM sys.dm_os_wait_stats;
Another example is examining current sessions, much like
the sp_who2 command:
SELECT
* FROM sys.dm_exec_sessions;
What are temp
tables? What is the difference between global and local temp tables?
Temporary tables are temporary storage structures. You
may use temporary tables as buckets to store data that you will manipulate
before arriving at a final format. The hash (#) character is used to declare a
temporary table as it is prepended to the table name. A single hash (#)
specifies a local temporary table.
CREATE
TABLE #tempLocal ( nameid int, fname varchar(50), lname varchar(50) )
Local temporary tables are available to the current
connection for the user, so they disappear when the user disconnects.
Global temporary tables may be created with double hashes
(##). These are available to all users via all connections, and they are
deleted only when all connections are closed.
CREATE
TABLE ##tempGlobal ( nameid int, fname varchar(50), lname varchar(50) )
Once created, these tables are used just like permanent
tables; they should be deleted when you are finished with them. Within SQL
Server, temporary tables are stored in the Temporary Tables folder of the
tempdb database.
How are
transactions used?
Transactions allow you to group SQL commands into a
single unit. The transaction begins with a certain task and ends when all tasks
within it are complete. The transaction completes successfully only if all
commands within it complete successfully. The whole thing fails if one command
fails. The BEGIN TRANSACTION, ROLLBACK TRANSACTION, and COMMIT TRANSACTION
statements are used to work with transactions. A group of tasks starts with the
begin statement. If any problems occur, the rollback command is executed to
abort. If everything goes well, all commands are permanently executed via the
commit statement.
What is the
difference between a clustered and a nonclustered index?
A clustered index affects the way the rows of data in a
table are stored on disk. When a clustered index is used, rows are stored in
sequential order according to the index column value; for this reason, a table
can contain only one clustered index, which is usually used on the primary
index value.
A nonclustered index does not affect the way data is
physically stored; it creates a new object for the index and stores the
column(s) designated for indexing with a pointer back to the row containing the
indexed values.
You can think of a clustered index as a dictionary in
alphabetical order, and a nonclustered index as a book’s index.
What are DBCC
commands?
Basically, the Database Consistency Checker (DBCC)
provides a set of commands (many of which are undocumented) to maintain
databases — maintenance, validation, and status checks. The syntax is DBCC
followed by the command name. Here are three examples:
DBCC CHECKALLOC — Check disk allocation consistency.
DBCC OPENTRAN — Display information about recent
transactions.
DBCC HELP — Display Help for DBCC commands.
What is the
difference between truncate and delete?
Truncate is a quick way to empty a table. It removes
everything without logging each row. Truncate will fail if there are foreign key
relationships on the table. Conversely, the delete command removes rows from a
table, while logging each deletion and triggering any delete triggers that may
be present.
What does the
NOLOCK query hint do?
Table hints allow you to override the default behavior of
the query optimizer for statements. They are specified in the FROM clause of
the statement. While overriding the query optimizer is not always suggested, it
can be useful when many users or processes are touching data. The NOLOCK query
hint is a good example because it allows you to read data regardless of who
else is working with the data; that is, it allows a dirty read of data — you
read data no matter if other users are manipulating it. A hint like NOLOCK
increases concurrency with large data stores.
SELECT
* FROM table_name (NOLOCK)
Microsoft advises against using NOLOCK, as it is being
replaced by the READUNCOMMITTED query hint
What is a CTE?
A common table expression (CTE) is a temporary named
result set that can be used within other statements like SELECT, INSERT,
UPDATE, and DELETE. It is not stored as an object and its lifetime is limited
to the query. It is defined using the WITH statement as the following example
shows:
WITH
ExampleCTE (id, fname, lname)
AS
(
SELECT
id, firstname, lastname FROM table
)
SELECT
* FROM ExampleCTE
A CTE can be used in place of a view in some instances.
What is a view?
What is the WITH CHECK OPTION clause for a view?
A view is a virtual table that consists of fields from
one or more real tables. Views are often used to join multiple tables or to
control access to the underlying tables.
The WITH CHECK OPTION for a view prevents data
modifications (to the data) that do not confirm to the WHERE clause of the view
definition. This allows data to be updated via the view, but only if it belongs
in the view.
What is a query
execution plan?
SQL Server has an optimizer that usually does a great job
of optimizing code for the most effective execution. A query execution plan is
the breakdown of how the optimizer will run (or ran) a query. There are several
ways to view a query execution plan. This includes using the Show Execution
Plan option within Query Analyzer; Display Estimated Execution Plan on the
query dropdown menu; or use the SET SHOWPLAN_TEXT ON command before running a
query and capturing the execution plan event in a SQL Server Profiler trace.
What does the SQL
Server Agent Windows service do?
SQL Server Agent is a Windows service that handles
scheduled tasks within the SQL Server environment (aka jobs). The jobs are
stored/defined within SQL Server, and they contain one or more steps that
define what happens when the job runs. These jobs may run on demand, as well as
via a trigger or predefined schedule. This service is very important when
determining why a certain job did not run as planned — often it is as simple as
the SQL Server Agent service not running.
What is the
default port number for SQL Server?
If enabled, the default instance of Microsoft SQL Server
listens on TCP port 1433. Named instances are configured for dynamic ports, so
an available port is chosen when SQL Server starts. When connecting to a named
instance through a firewall, configure the Database Engine to listen on a
specific port, so that the appropriate port can be opened in the firewall.
The list of possible questions is endless. I am sure
these questions will spawn debate and discussion.
No comments:
Post a Comment