16

The third part of this assignment I'm working on says, "Create and index the existing Northwind view called “dbo.Orders Qry” based on the columns OrderID and EmployeeID."

It is expected that I will get an error; however, my instructor only told us to Google it. I did, but scheme binding isn't even in this week's lesson or any others, and the things I've found are too in-depth for me to understand.

Is this an issue of me not checking a box or changing a setting somewhere?

Sam
  • 161
  • 1
  • 1
  • 3

2 Answers2

25

Sounds like this is describing an indexed view, you can read up on them at Microsoft's site here. Microsoft enabled this capability starting with SQL 2005.

In the text for the view definition, you'd need to add the words WITH SCHEMABINDING just after the CREATE VIEW statement, for example:

CREATE VIEW dbo.MyView
WITH SCHEMABINDING

AS

SELECT a, b, c
FROM dbo.MyTable

To add indexing, you'd add a statement to the view definition similar to this:

-- Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_MyView_ClusteredIndex
ON dbo.MyView(a, b, c)

GO
Darth Continent
  • 2,319
  • 3
  • 25
  • 41
1

I was looking for exactly what was posted by Darth Continent. This worked like a charm, however, it was an entirely different situation. I believe that the answer above should at least be credited as the resolution, and if not a follow up would be great.

Anthony Mason
  • 165
  • 1
  • 12
  • 1
    This worked for me: CREATE VIEW [dbo].[PERSON_V] WITH SCHEMABINDING AS SELECT SL_LAST_NAME + '; ' + SL_FIRST_NAME AS RES_NAME, ASSIGNED_ORG, PERSON_ID, [USER_NAME] AS WINDOWS_ACCOUNT, OFFICE_BUILDING, OFFICE_ROOM, MAIL_STOP, OFFICE_PHONE, JOB_TITLE, RES_TYPE, 'TestUser@test.com' AS EMAIL_ADDR, PARENT_RSRC_ID FROM dbo.PERSON GO CREATE UNIQUE CLUSTERED INDEX IX_PERSON_ID ON dbo.PERSON_V (PERSON_ID) GO – Anthony Mason Feb 08 '14 at 22:32