About maintenance plan rebuild indexing - sql-server-2008-r2

How to configure rebuild and reorganization in maintenance plan? Please tell me step by step, for SQL Server 2008 R2

I think you need to set up a default profile for your database mail profile. Under Management -> Database mail profile, right click and select Database Mail configuration. A wizard will pop up. Select Manage profile security. As shown below, atleast one of your mail profiles should have been set as Default Profile ('Yes')

Related

SQL Studio Management - How to run queries across multiple servers

My 2 server both use SQL Server 2008 R2
I have my local SQL server and also an Amazon machine running an instance of SQL-Server there.
I'm able to connect from my local machine to that Amazon SQL using the standard 10.10.10.10, 1433 connection from my local Management Studio.
What i need to do now is to run a query that says ..tells me what records I have locally that are not on the Amazon server right now.
Something like:
SELECT *
FROM [LOCAL].dbo.Table1
WHERE Field1 NOT IN
(SELECT Field1 FROM [AMAZON].Database1.dbo.Table1)
================================
Question:
I don't know how to write the "AMAZON" location on the Query window itself, since it's running on a different server.
Any help is truly appreciated !!!
You have to configure AMAZON Server as LINKED Server on your local machine. If you name it "AMAZON" - you query will work exactly as you wrote.
In SSMS, \Server Objects\Linked Servers. Right click, 'new linked server'. Name your server, and choose 'SQL server' radio button. Because I was authorized user on both machines with windows credentials, I selected 'Be made using the login's current security context' radio button under the security tab, and did not even have to fool with the local/remote user mappings.
In order to be able to run queries across multiples servers, a link (linked Server) must be established between the 2 Servers. To create a linked server,
Navigate to the Linked Server Sub-folder under the Server Object folders
Right Click on the Linked Server Folder
Click on New Linked Server
Supply the Connection Strings for the Server
Name your Linked Server.
You can now use the full object qualification (LinkedServer.Database.tableOwner.Table) to access the objects.
Good Luck !
You should open your registered server window and create a group for your servers. then you right click the group name and select new query (Or select several servers in that group). if you execute the query it will rung against the servers selected.

SQL Server 2008 Service Broker tutorial -- cannot receive the message (exception in transmission_status)

I am learning how to use the Service Broker of SQL Server 2008 R2. When following the tutorial Completing a Conversation in a Single Database. Following the Lesson 1, I have successfully created the message types, contract, the queues and services. Following the Lesson 2, I have probably sent the message. However, when trying to receive the message, I get the NULL for the ReceivedRequestMsg instead of the sent content.
When looking at the sys.transmission_queue, the transmission_status for the message says:
An exception occurred while enqueueing a message in the target queue. Error: 15517, State: 1. Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.
I have installed SQL Server using the Windows login like Mycomp\Petr. I am using that login also for the lessons.
Can you guess what is the problem? What should I check and or set to make it working?
Edited 2012/07/16: For helping to reproduce the problem, here is what I did. Can you reproduce the error if you follow the next steps?
Firstly, I am using Windows 7 Enterprise SP1, and Microsoft SQL Server 2008 R2, Developer Edition, 64-bit (ver. 10.50.2500.0, Root Directory located at C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_PRIKRYL05\MSSQL).
Following the tutorial advice, I have downloaded the AdventureWorks2008R2_Data.mdf sample database, and copied it into C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_PRIKRYL05\MSSQL\DATA\AdventureWorks2008R2_Data.mdf
The SQL Server Management Studio had to be launched "As Administrator" to be able to attach the data later. Then I connected the SQL Server.
Right click on Databases, context menu Attach..., button Add..., pointed to AdventureWorks2008R2_Data.mdf + OK. Then selected the AdventureWorks2008R2_Log.ldf from the grid below (reported as Not found) and pressed the Remove... button. After pressing OK, the database was attached and the AdventureWorks2008R2_log.LDF was created automatically.
The following queries were used for looking at "Service Broker enabled/disabled", and for enabling (the Service Broker was enabled successfully for the database):
USE master;
GO
SELECT name, is_broker_enabled FROM sys.databases;
GO
ALTER DATABASE AdventureWorks2008R2
SET ENABLE_BROKER
WITH ROLLBACK IMMEDIATE;
GO
SELECT name, is_broker_enabled FROM sys.databases;
GO
Then, following the tutorial, the queries below were executed to create the message types, the contract, the queues, and the services:
USE AdventureWorks2008R2;
GO
CREATE MESSAGE TYPE
[//AWDB/1DBSample/RequestMessage]
VALIDATION = WELL_FORMED_XML;
CREATE MESSAGE TYPE
[//AWDB/1DBSample/ReplyMessage]
VALIDATION = WELL_FORMED_XML;
GO
CREATE CONTRACT [//AWDB/1DBSample/SampleContract]
([//AWDB/1DBSample/RequestMessage]
SENT BY INITIATOR,
[//AWDB/1DBSample/ReplyMessage]
SENT BY TARGET
);
GO
CREATE QUEUE TargetQueue1DB;
CREATE SERVICE
[//AWDB/1DBSample/TargetService]
ON QUEUE TargetQueue1DB
([//AWDB/1DBSample/SampleContract]);
GO
CREATE QUEUE InitiatorQueue1DB;
CREATE SERVICE
[//AWDB/1DBSample/InitiatorService]
ON QUEUE InitiatorQueue1DB;
GO
So far, so good.
Then the following queries are used to look at the queues (now empty when used):
USE AdventureWorks2008R2;
GO
SELECT * FROM InitiatorQueue1DB WITH (NOLOCK);
SELECT * FROM TargetQueue1DB WITH (NOLOCK);
SELECT * FROM sys.transmission_queue;
GO
The problem manifests when the message is sent:
BEGIN TRANSACTION;
BEGIN DIALOG #InitDlgHandle
FROM SERVICE
[//AWDB/1DBSample/InitiatorService]
TO SERVICE
N'//AWDB/1DBSample/TargetService'
ON CONTRACT
[//AWDB/1DBSample/SampleContract]
WITH
ENCRYPTION = OFF;
SELECT #RequestMsg =
N'<RequestMsg>Message for Target service.</RequestMsg>';
SEND ON CONVERSATION #InitDlgHandle
MESSAGE TYPE
[//AWDB/1DBSample/RequestMessage]
(#RequestMsg);
SELECT #RequestMsg AS SentRequestMsg;
COMMIT TRANSACTION;
GO
When looking at the queues, the Initiator... and the Target... queues are empty, and the sent message can be found in sys.transmission_queue with the above mentioned error reported via the transmission_status.
alter authorization on database::[<your_SSB_DB>] to [sa];
The EXECUTE AS infrastructure requires dbo to map to a valid login. Service Broker uses the EXECUTE AS infrastructure to deliver the messages. A typical scenario that runs into this problem is a corporate laptop when working from home. You log in to the laptop using cached credentials, and you log in into the SQL using the same Windows cached credentials. You issue a CREATE DATABASE and the dbo gets mapped to your corporate domain account. However, the EXECUTE AS infrastructre cannot use the Windows cached accounts, it requires direct connectivity to the Active Directory. The maddening part is that things work fine the next day at office (your laptop is again in the corp network and can access to AD...). You go home in the evening, continue with Lesson 3... and all of the sudden it doesn't work anymore. Make the whole thing seem flimsy and unreliable. Is just the fact that AD conectivity is needed...
Another scenatio that leads to the same problem is caused by the fact that databases reteint the SID of their creator (the Windows login that issues the CREATE DATABASE) when restored or attached. If you used a local account PC1\Fred when you create the DB and then copy/attach the database to PC2, the account is invalid on PC2 (it is scoped to PC1, of course). Again, not much is affected but EXECUTE AS is, and this causes Service Broker to give the error you see.
And last example is when the DB is created by a user that later leaves the company and the AD account gets deleted. Seems like revenge from his part, but he's innocent. The production DB just stops working, simply because it's his SID that the dbo maps too. Fun...
By simply changing the dbo to sa login you fix this whole EXECUTE AS thing and all the moving parts that depend on it (and SSB is probably the biggest dependency) start working.
You would need to grant receive on your target queue to your login. And it should work!
USE [YourDatabase]
GRANT RECEIVE ON [dbo].[YourTargetQueue]
TO [Mycomp\Petr];
GO
And you also need to grant send for your user, permission on Target Service should be sufficient, but let's enable on both services for the future.
USE AdventureWorks2008R2 ;
GO
GRANT SEND ON SERVICE::[//AWDB/1DBSample/InitiatorService]
TO [Mycomp\Petr] ;
GO
GRANT SEND ON SERVICE::[//AWDB/1DBSample/TargetService]
TO [Mycomp\Petr] ;
GO

Error code 40 when running SSRS reports from Internet Explorer (run as administrator)

We deployed a VB.Net application on a customer's computer that contains SSRS reports.
The application connects to the SQL Server database in the app without any problems. We installed SQL Server Data Tools so we could deploy the reports (rdl) and data source (rdl) files up to the report server. These deploy without any problems.
In SQL Server Data Tools we can "Preview" the reports without any problems as well.
We do run into a problem when attempting to view the report from Internet Explorer (run as an administrator).
We get the following error:
Cannot create a connection to data source 'DataSourceReports'
(this is the name we used for the TargetDataSourceFolder)
error:40 - Could not open a connection to SQL Server
We also get the same error when the app we deployed runs the reports.
Please let us know what is not set up correctly on the SQL Server side.
A likely possibility is that you are experiencing a double hop authentication problem. It's not clear from your explanation, but is the SQL Server database on a separate server from the report server? If so, then your credentials allow you to connect to the report server but Windows integrated security does not pass those credentials on to the SQL Server database if you are using NTLM on the report server. The report server tries to use Kerberos on your network to authenticate by way of ticketing to the SQL Server database, but you must have this configured correctly on your network. See this article if you want to use Kerberos: http://technet.microsoft.com/en-us/library/ff679930(v=sql.100).aspx.
Another (easier) solution is to open the data source on the report server and change the authentication to use stored credentials. Make sure the credentials you use have read permission on the SQL Server database. The downside of this approach is that you cannot use row-level security in your report by user unless you design your report to capture user information and set up the query or a filter on the dataset to restrict data by user. If that's not a concern, the stored credentials are easy to set up and maintain - and you're going to have to do this anyway if you want to use caching, snapshots, or subscriptions. For more information on stored credentials, see http://msdn.microsoft.com/en-us/library/ms159736.aspx.

SQL Server 2008 R2 login simply doesn't work

I've been unsuccessfully try to make this work for days now. I've tried dozens of suggestions in posts with the exact same result.
80040ed4 Failed login for user 'myuser'
Please if you have a link to a tutorial with screen shots that doesn't leave out some crucial step, post it here.
If you know how to do this from step 1 to final, please reply.
SBS 2008 R2 is the version
I simply want to create a user that can read data from a database named 'SharedWebDb' that is located on MYSQLSERVER/SHAREPOINT
Thanks.
Step 1: Create a new login with sql server authentication.
Step 2: In server Role tab make him sysadmin.
Step 3: In user mapping tab choose you database,master,tempdb etc and marked it as dbowner
Step 4: Click on ok button.
Step 5: Right click on server name and choose properties then in securities tab opt sql server and window Authentication mode and click on ok button.
Step 6: Restart you sql server.
Step 7: Now new sql server login will work :)

How to stop asking for the credentials while deploying reports in ssrs 2008

While deploying reports I am getting login prompt asking for the User Name and password. I have tried providing all possible id and passwords but no use. I can access both the Report manager url and ReportServer url but if I start deploying reports through SQL Server Business Intelligence development studio I am getting the above mentioned prompt. Please let me know how to avoid this.
Make sure that the server on which you are trying to deploy the Reports, you must be under the group which has the following Role assigned.
Browser, ContentManager and Publisher.
goto Start menu ->Microsoft SQL Server 2008->Configuration tools ->select Reporting services configuration manager ->Connect Report server ->Select Database from the left side options -> Current Report server Database -> Click Change Database ->Choose Existing server Database ->Test the connection ->Next -> Select Report Server as Report server Database.
And goto Select Database from the left side options -> "Current Report server Database Credentials" ->select Authentication type as integrated security and Test connection -> select Authentication type as Service credentials.
I hope it will resolve the problems
Best verification is to make sure you are deploying the new reports to your report server link. And not to the link which corresponds to the report manager. I was running across the process of deploying reports after ages, and I observed this problem when the report server target link is not correct.
I use VM for SSRS development.. and it's not a member of the domain where the SSRS Service lives.
I was able to easily eliminate prompts when deploying reports.. by setting up a LOCAL user account on the SSRS server that used the same username / password as what I was using in my VM.
I had the same issue, but this worked for me: When deploying from SQL Server Business Intelligence Development Studio, you must be running it as Administrator. ie. Right-Click and select 'Run as Administrator'.
This is possibly because if you are not running it with elevated privileges, then it can't do the Impersonation to login to the server.
Using web services URL in TargetServerURL instead of Report Manager URL.
Goto Reporting services configuration manager, connect SSRS server then go to "Web service URL" in right hand side you will find a link like as http://server//reportingServer. Copy the url.
Now open Business Intelligence Development Studio. open SSRS project.
Goto Project menu and click on properties, in property page Paste copied URL in TargetServerURL. Now Rebuild the project and Deploy. Credential will not appear and Deploy succeeded.
When moving (deploying or copying) an RDL file from one location (development) to another (production) the report may loose track of it's shared data source, at which point the data set will replace the original node with a new node that instructs SSRS to demand credentials.
In the report that is persistently demanding credentials if you right-click in solution explorer and select 'view code' the .rdl will open in an xml reader window. If your mark up contains a reference that looks like:
<DataSources>
<DataSource Name="YourDataSourceName">
<ConnectionProperties>
<DataProvider>SQL</DataProvider>
<ConnectString>Data Source=<i>your-server</i>;Initial Catalog=<i>your-db-name</i> </ConnectString>
<Prompt><b>Enter a user name and password to access the data source:</b></Prompt>
</ConnectionProperties>
<rd:SecurityType>DataBase</rd:SecurityType>
<rd:DataSourceID>e2f9f97c-GUID-GOES-HERE-395c383c1da2</rd:DataSourceID>
</DataSource>
</DataSources>
If this is what you find in the xml/rdl this is likely your problem.
Make sure you have a Shared Data Source that works as expected, you may have to build a new report based off of this that does not prompt for credentials.
In a report that does NOT ask for credentials, open the RDL using 'view code' option.
Select the relevant xml node (under ) and copy the node, it should look something like:
<DataSource Name="YourDataSourceName">
<DataSourceReference>YourDataSourceName</DataSourceReference>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>19f0a78a-<b>GUID-GOES-HERE</b>-0e277b3b153f</rd:DataSourceID>
</DataSource>
In your target report replace the node with the one you copied.
(worth noting that when you change the 'rd:SecurityType' from 'Database' to 'None' you are NOT removing security, you are merely passing responsiblity for authentication from the report's dataset on to the shared datasource. (Security is born by the connection rather than the query)
I had the same problem, it was due to the wrong spelling of the TargetServerUrl in report project properties, make sure that it meet the same name in the Report Server Configuration Manager: