Showing posts with label client. Show all posts
Showing posts with label client. Show all posts

Wednesday, March 28, 2012

PRINT command Not Working For Database Client

Hello,

The PRINT command works fine on Query Analyzer.
However, when I used it with other Database Client,
eg: Aqua Data Studio, nothing got printed out.

Is there a way to make it work?

Thanks in advance.ehchn1@.hotmail.com (James) wrote in message news:<46fb4b22.0405272205.4e2e0bd4@.posting.google.com>...
> Hello,
> The PRINT command works fine on Query Analyzer.
> However, when I used it with other Database Client,
> eg: Aqua Data Studio, nothing got printed out.
> Is there a way to make it work?
>
> Thanks in advance.

I don't know anything about Aqua Data Studio, but the client has to
handle the PRINT output correctly - see "Using PRINT" in Books Online
for more details. The message is returned as an error, so perhaps Aqua
is treating it as an error, and doing something else with it. But you
should probably ask whoever makes the product.

Simon|||[posted and mailed, please reply in news]

James (ehchn1@.hotmail.com) writes:
> The PRINT command works fine on Query Analyzer.
> However, when I used it with other Database Client,
> eg: Aqua Data Studio, nothing got printed out.
> Is there a way to make it work?

Just like Simon, I have never heard of Aqua Data Studio before, but
a quick search on the net indicates that this is some of sort of
multi-platform Query Analyzer. If that sort of tool does not handle
PRINT correctly, this is a big defeciency, and you should raise an
issue with the vendor.

It could be, however, that the problem is in the JDBC driver, so trying
another driver could be worth a try. Then again, Aquafold says on
http://www.aquafold.com/docs-jdbcdrivers.html: "Microsoft SQL Server JDBC
Drivers - The SQL Server JDBC drivers included with ADS work across all
versions of SQL Server. There is no need to change or update this driver."

So you should probably talk to the vendor in this case too.

--
Erland Sommarskog, SQL Server MVP, esquel@.sommarskog.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techin.../2000/books.asp|||
Erland Sommarskog wrote:

> [posted and mailed, please reply in news]
> James (ehchn1@.hotmail.com) writes:
>>The PRINT command works fine on Query Analyzer.
>>However, when I used it with other Database Client,
>>eg: Aqua Data Studio, nothing got printed out.
>>
>>Is there a way to make it work?
> Just like Simon, I have never heard of Aqua Data Studio before, but
> a quick search on the net indicates that this is some of sort of
> multi-platform Query Analyzer. If that sort of tool does not handle
> PRINT correctly, this is a big defeciency, and you should raise an
> issue with the vendor.
> It could be, however, that the problem is in the JDBC driver, so trying
> another driver could be worth a try. Then again, Aquafold says on
> http://www.aquafold.com/docs-jdbcdrivers.html: "Microsoft SQL Server JDBC
> Drivers - The SQL Server JDBC drivers included with ADS work across all
> versions of SQL Server. There is no need to change or update this driver."
> So you should probably talk to the vendor in this case too.

If the product uses JDBC, it is likely that the PRINT output will
be available to the JDBC driver via the Connection and Statement
getWarnings() call. You may get quicker turnarouond from the product
vendor if you include this fact.
Joe Weinstein at BEA

Print button is not visible in rdlc report

I am using client side reports (.rdlc) with ASP.Net 2.0 and SQL Server 2000. Reports are generating fine. But there is no print button on report viewer when i generate report. I use browser's print option to print reports but reports does not get printed properly. Can some one tell me how to enable Print button in client side reports.

Local reports in web apps dont support printing . you should write your own print function for that .

you have to render the report and the print generated emf files .here is a sample code but its in win apps.

you should create your own print function

http://msdn2.microsoft.com/en-us/library/ms252091(VS.80).aspx

Friday, March 23, 2012

Primary Key with Cluster Index

Hi All,

One of my client having 1 million(nearly) records in a table.
I defined the table as below
1) Created table with one col(we can name it as "ID") having IDENTITY
2) Using "alter table", I created CLUSTERED PRIMARY KEY Constraint on Same field (ID)
3) The Primary key having 2 ref with another 2 tables

Now the issue is when we create or define a primary key (With Clustered Option) automatically cluster Index will be created on defined table

As such table having huge data whenever any updation or insertion against that particular table taking huge amount of time, because the cluster Index trying re-paging whole data. Because of re-paging each and every time "Transaction Log also growing in huge" (database is in full recovery mode and client wants in same mode only)
Data partitioning not posible because whole data related and current live data

I tried following options with vain

1) To Clear transaction log I suggested to take regular log backup's
2) I tried to drop cluster index and tried to implement non clustered index
Drop and re-create index is take taking huge amount of time
Even in this process I have to Re_Index remaining Index's also

Pls give me any other solution or suggestion in this regard

with Thanks & Regards
BhaskaraFirst suggestion: pick a column name more descriptive than "ID"....

Second suggestion: one million rows is not that much data. Could there be some other reason why inserts are taking so long?

Third suggestion: you can reduce the number of initial page splits setting the fill factor lower when you create the index.|||If the clustered index is an identity then you are not getting page splits unless you are making changes to data attribute columns and increasing the size of this data. On inserts you are certainly not getting page splits - monotonically increasing clustered indexes like this will not create splits and are the fastest possible index for inserts (faster even than no clustered index).

Hang on - I just reread - are you changing the clustered index constantly?|||There appears to be more than one problem here, so it may take several steps to correct all of the problems.

First and foremost, you specified in your ALTER TABLE that you wanted the index to be clustered, so SQL Server dutifully did what you asked. That is not part of your problem at all.

A million rows is not a large table for SQL Server. A billion rows might be large, but a million definitely is not.

SQL Server disk I/O is what drives log usage. The log file is essentially a record of what changes were made to the database at the disk (binary) level.

Dropping a clustered index shouldn't be expensive in terms of time, but the server should not permit you to drop an index that is placed by the server to protect DRI (Declarative Referential Integrity). It shouldn't take a long time, but the DROP INDEX ought to fail.

When you create a new clustered index, it can cause massive amounts of I/O operations because a clustered index effectively rearranges the data store for the entire table. That means that every row in the table can (and probably will) move, and that every existing index on the table will need to be rebuilt.

When you change a table with a clustered index (using INSERT, UPDATE, or DELETE) the amount of I/O should be nearly the same as updating the same table without the clustered index. It is possible that you might have a page split that a heap insert would not incur, but the grand total of the I/O shouldn't be significantly different.

Whatever is causing the change in disk I/O and log file usage is almost certainly not the clustered index alone. Something else is either part or all of this problem.

To answer your questions as you posted them:

1) Take regular incremental backups to allow log space to be reused. This should not affect the time needed, but it will reduce the log file growth.

2) Dropping the clustered index should be impossible using DROP INDEX. I think you'll need to use ALTER TABLE to make this happen. Dropping the index ought to be quick, although creating a new index may take a while.

-PatP|||Dropping a clustered index shouldn't be expensive in terms of time

Unless there are other indexes on the table.|||are there any triggers on this table?|||If the clustered index is an identity then you are not getting page splits unless you are making changes to data attribute columns and increasing the size of this data. On inserts you are certainly not getting page splits - monotonically increasing clustered indexes like this will not create splits and are the fastest possible index for inserts (faster even than no clustered index).

Hang on - I just reread - are you changing the clustered index constantly?

Thanks for your interest in my problem
When I observed in Sql profiler, if there is any Insertion or Updation, it is trying re-page(indexing Pages) whole

come to last point made by you
Intially I declared it as clustered index, now because of slow performance i wanted it to drop and create NON-CLUSTER index|||Hi Pat Phelan,
Thanks for your interest in my problem

I Got what exactly you wanted to say
still I have some clarifications

1) I try to drop the clustered index using "ALTER TABLE" after removing DRI
and then I recreate the NONCLUSTERED INDEX using
"ALTER Table Document ADD CONSTRAINT PK_Document_id PRIMARY KEY NONCLUSTERED (id) ON [PRIMARY] "

whether it will give any impact on performance|||OK, you're dropping the constraint, not the index

Do you know what clustering means?

Tuesday, March 20, 2012

Primary Key Analysis Tool

I have a client database where the users are experiencing very unpredictable behavior and I found after investigating that the majority of the tables don't have primary keys. :o

They were imported from an Access database and I think the table creator or the Access wizard itself added auto-number fields, so I know most of the tables have at least one column that could become the primary key.

Is there a free tool available that will allow me to analyze these tables to identify and list the tables that need primary keys and also help identify candidate columns for the primary key?

It would be helpful if I could automate some of the script generation to install the primary keys so I don't have to do them all manually.you should be able to work out a query using the information schema views.|||Is it a full moon toay?

Script out the database and look it over

Or do as Sean said and left join tables key_column_usage|||Is it a full moon toay?

Script out the database and look it over

Or do as Sean said and left join tables key_column_usage
No, sorry the moon was full on the 26th.

The reason I asked about a tool to help with this is I don't have time or patience to script and analyze about 500 tables. The key_column_usage view isn't helpful since none of the user tables have keys - there are only two entries for the master table keys.|||This script is beta, but it works pretty well. Supply a tablename and it will find all the natural keys in the data.|||I didn't open the blind dudes script, but I guess it's looking for cardiality of the data.

The more unique it is would be the key

But you could write your own

So lets' you find a column that all has unique values, I would use that as a key

But what if you have columns with 2 or 3 values?

Or mostly unique?

Was that app written to suppose to enforce RI

A lot of 3rd party apps I see do that

scrubs|||This script is beta, but it works pretty well. Supply a tablename and it will find all the natural keys in the data.
Exactly what I needed. :beer:

Saturday, February 25, 2012

Previous Business Day

At the moment, I have a report that's using "=Today.AddDays(-1)" to return
yesterday's date in the date range parameters, but the client has now come
back and requested that they would prefer not to use weekends...e.g.: loading
the report on Monday should show last Friday's date.
Can this be done?
Thanks in advance.
Jadranka Krapic
DBA
Stargate Technologies
(www.stargatetech.com.au)Hi,
Write simple custom code function
Function GetDate() As Date
Select Case Today.DayOfWeek
Case DayOfWeek.Monday
GetDate = Today.Date.AddDays(-3)
Case Else
GetDate = Today.Date.AddDays(-1)
End Select
End Function
And as parameter label and value put
=Code.GetDate()
Hope this help.
Best regards,
Dejan Lukovic
"Jadranka" <Jadranka@.discussions.microsoft.com> escribió en el mensaje
news:03C3F8BF-1EC8-420B-81D9-106D94D608A1@.microsoft.com...
> At the moment, I have a report that's using "=Today.AddDays(-1)" to return
> yesterday's date in the date range parameters, but the client has now come
> back and requested that they would prefer not to use weekends...e.g.:
loading
> the report on Monday should show last Friday's date.
> Can this be done?
> Thanks in advance.
> Jadranka Krapic
> DBA
> Stargate Technologies
> (www.stargatetech.com.au)

Preview error

Hi,
I'm trying to use Reporting Services, I have installed the client component on my computer (Win 2K pro sp4) and I try to start to design a new report. The data source is a SQL Server developer edition Sp3 installed on the same computer.
All works fine until I try to preview the report using the preview tab from the designer. I received this message "command 'view.output' not available.
My Visual Studio version is EA enghlish version. I have installed the RS SP1 with the same results.
Anyone can help me ?
Thank's in advance and I apologize for my poor englishDo you have any add-ins installed? Can you select View\Other Windows\Output
from the View menu? What happens if you open the VS Command Window, and type
"View.Output" ?
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote in
message news:79F377AF-8255-473C-9AFE-6833731E7E65@.microsoft.com...
> Hi,
> I'm trying to use Reporting Services, I have installed the client
> component on my computer (Win 2K pro sp4) and I try to start to design a
> new report. The data source is a SQL Server developer edition Sp3
> installed on the same computer.
> All works fine until I try to preview the report using the preview tab
> from the designer. I received this message "command 'view.output' not
> available.
> My Visual Studio version is EA enghlish version. I have installed the RS
> SP1 with the same results.
> Anyone can help me ?
> Thank's in advance and I apologize for my poor english|||What do you mean for add-ins ?
Yes I can select View\Other Windows\Output from the View menu.
If I open the VS Command Windows and type View.Output is not recognized as command.
"Lev Semenets [MSFT]" wrote:
> Do you have any add-ins installed? Can you select View\Other Windows\Output
> from the View menu? What happens if you open the VS Command Window, and type
> "View.Output" ?
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote in
> message news:79F377AF-8255-473C-9AFE-6833731E7E65@.microsoft.com...
> > Hi,
> > I'm trying to use Reporting Services, I have installed the client
> > component on my computer (Win 2K pro sp4) and I try to start to design a
> > new report. The data source is a SQL Server developer edition Sp3
> > installed on the same computer.
> > All works fine until I try to preview the report using the preview tab
> > from the designer. I received this message "command 'view.output' not
> > available.
> > My Visual Studio version is EA enghlish version. I have installed the RS
> > SP1 with the same results.
> > Anyone can help me ?
> > Thank's in advance and I apologize for my poor english
>
>|||Please type ">View.Output"
Leading ">" is required there.
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote in
message news:267039CE-E33E-42BB-8B69-E20E23F55AC0@.microsoft.com...
> What do you mean for add-ins ?
> Yes I can select View\Other Windows\Output from the View menu.
> If I open the VS Command Windows and type View.Output is not recognized as
> command.
>
> "Lev Semenets [MSFT]" wrote:
>> Do you have any add-ins installed? Can you select View\Other
>> Windows\Output
>> from the View menu? What happens if you open the VS Command Window, and
>> type
>> "View.Output" ?
>> --
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote
>> in
>> message news:79F377AF-8255-473C-9AFE-6833731E7E65@.microsoft.com...
>> > Hi,
>> > I'm trying to use Reporting Services, I have installed the client
>> > component on my computer (Win 2K pro sp4) and I try to start to design
>> > a
>> > new report. The data source is a SQL Server developer edition Sp3
>> > installed on the same computer.
>> > All works fine until I try to preview the report using the preview tab
>> > from the designer. I received this message "command 'view.output' not
>> > available.
>> > My Visual Studio version is EA enghlish version. I have installed the
>> > RS
>> > SP1 with the same results.
>> > Anyone can help me ?
>> > Thank's in advance and I apologize for my poor english
>>|||I haven't understand while window you mean, I confused it with the VS Command Prompt.
So if I try to type > View. I can see in the intellisense window the Output method but when I select it i obtain this message "Comando "View.Output" non disponibile" translate in enghlish "Comand "View.Output" not available".
Do you think that the problem may be that I use VS EA in eghlish on a Windows 2000 Pro Italian machine ?
Many thanks for your help
"Lev Semenets [MSFT]" wrote:
> Please type ">View.Output"
> Leading ">" is required there.
> --
> This posting is provided "AS IS" with no warranties, and confers no rights.
>
> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote in
> message news:267039CE-E33E-42BB-8B69-E20E23F55AC0@.microsoft.com...
> > What do you mean for add-ins ?
> > Yes I can select View\Other Windows\Output from the View menu.
> > If I open the VS Command Windows and type View.Output is not recognized as
> > command.
> >
> >
> > "Lev Semenets [MSFT]" wrote:
> >
> >> Do you have any add-ins installed? Can you select View\Other
> >> Windows\Output
> >> from the View menu? What happens if you open the VS Command Window, and
> >> type
> >> "View.Output" ?
> >>
> >> --
> >> This posting is provided "AS IS" with no warranties, and confers no
> >> rights.
> >>
> >>
> >> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote
> >> in
> >> message news:79F377AF-8255-473C-9AFE-6833731E7E65@.microsoft.com...
> >> > Hi,
> >> > I'm trying to use Reporting Services, I have installed the client
> >> > component on my computer (Win 2K pro sp4) and I try to start to design
> >> > a
> >> > new report. The data source is a SQL Server developer edition Sp3
> >> > installed on the same computer.
> >> > All works fine until I try to preview the report using the preview tab
> >> > from the designer. I received this message "command 'view.output' not
> >> > available.
> >> > My Visual Studio version is EA enghlish version. I have installed the
> >> > RS
> >> > SP1 with the same results.
> >> > Anyone can help me ?
> >> > Thank's in advance and I apologize for my poor english
> >>
> >>
> >>
>
>|||This is some weird VS problem...
--
This posting is provided "AS IS" with no warranties, and confers no rights.
"Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote in
message news:18EA1D58-65E7-4117-8FCC-F078862D0F08@.microsoft.com...
>I haven't understand while window you mean, I confused it with the VS
>Command Prompt.
> So if I try to type > View. I can see in the intellisense window the
> Output method but when I select it i obtain this message "Comando
> "View.Output" non disponibile" translate in enghlish "Comand "View.Output"
> not available".
> Do you think that the problem may be that I use VS EA in eghlish on a
> Windows 2000 Pro Italian machine ?
> Many thanks for your help
> "Lev Semenets [MSFT]" wrote:
>> Please type ">View.Output"
>> Leading ">" is required there.
>> --
>> This posting is provided "AS IS" with no warranties, and confers no
>> rights.
>>
>> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com> wrote
>> in
>> message news:267039CE-E33E-42BB-8B69-E20E23F55AC0@.microsoft.com...
>> > What do you mean for add-ins ?
>> > Yes I can select View\Other Windows\Output from the View menu.
>> > If I open the VS Command Windows and type View.Output is not recognized
>> > as
>> > command.
>> >
>> >
>> > "Lev Semenets [MSFT]" wrote:
>> >
>> >> Do you have any add-ins installed? Can you select View\Other
>> >> Windows\Output
>> >> from the View menu? What happens if you open the VS Command Window,
>> >> and
>> >> type
>> >> "View.Output" ?
>> >>
>> >> --
>> >> This posting is provided "AS IS" with no warranties, and confers no
>> >> rights.
>> >>
>> >>
>> >> "Roberto Pasqualini" <RobertoPasqualini@.discussions.microsoft.com>
>> >> wrote
>> >> in
>> >> message news:79F377AF-8255-473C-9AFE-6833731E7E65@.microsoft.com...
>> >> > Hi,
>> >> > I'm trying to use Reporting Services, I have installed the client
>> >> > component on my computer (Win 2K pro sp4) and I try to start to
>> >> > design
>> >> > a
>> >> > new report. The data source is a SQL Server developer edition Sp3
>> >> > installed on the same computer.
>> >> > All works fine until I try to preview the report using the preview
>> >> > tab
>> >> > from the designer. I received this message "command 'view.output'
>> >> > not
>> >> > available.
>> >> > My Visual Studio version is EA enghlish version. I have installed
>> >> > the
>> >> > RS
>> >> > SP1 with the same results.
>> >> > Anyone can help me ?
>> >> > Thank's in advance and I apologize for my poor english
>> >>
>> >>
>> >>
>>

Monday, February 20, 2012

Preventing Injection - Client Side

Thanks
I am building an office application which uses Microsoft Access as a
client and SQL Server as the server. I am new to SQL Server and I
don't want to anything that is too stupid. I am assuming the db
administrator would create a database specifically for this
application. The program must be able to create and drop tables and
works fine when hosted over the internet.
I am preventing everything but characters and numbers in my WHERE
clauses and data to prevent injection.
But besides this measure, the program has these access/security
needs/issues.
Tables - Create Drop Read Write
SPs -- Create Execute
In addition the program needs to read from
system_user
db_name()
information_schema.tables
Information_schema.columns
sysobjects
Am I doing anything too stupid if the admin would prefer a more secure
situation, maybe on a company database?
Willywilly wrote:
> Tables - Create Drop Read Write
> SPs -- Create Execute
> In addition the program needs to read from
> system_user
> db_name()
> information_schema.tables
> Information_schema.columns
> sysobjects
Who is the owner of these tables? Are they owned by "dbo"? If so, all
users would have to be aliased as the dbo in the database, which means
they probably have too many rights. They could be limited to creating
tables under their user names (e.g. Joe.MyTable), but this would not
give other users access to these tables. Creating and Dropping tables is
generally a system admin or database owner function and not normal for
an application. Unless, of course, you mean temp tables.
To perform DML operations on tables, I would use stored procedures. You
can use them for SELECT statements as well, but some users choose to
embed SQL in the app (I prefer SPs all around).
The other objects/functions are available to all users.
Maybe you could explain the need to create/drop tables a little more.
Same for stored procedures.
David Gugick
Quest Software
www.imceda.com
www.quest.com|||> I am preventing everything but characters and numbers in my WHERE
> clauses and data to prevent injection.
Consider using parameters rather than concatenating user-supplied values to
build the SQL statement. This is more secure.
Hope this helps.
Dan Guzman
SQL Server MVP
"willy" <willrich33@.yahoo.com> wrote in message
news:1131557696.739603.25830@.g14g2000cwa.googlegroups.com...
> Thanks
> I am building an office application which uses Microsoft Access as a
> client and SQL Server as the server. I am new to SQL Server and I
> don't want to anything that is too stupid. I am assuming the db
> administrator would create a database specifically for this
> application. The program must be able to create and drop tables and
> works fine when hosted over the internet.
> I am preventing everything but characters and numbers in my WHERE
> clauses and data to prevent injection.
> But besides this measure, the program has these access/security
> needs/issues.
> Tables - Create Drop Read Write
> SPs -- Create Execute
> In addition the program needs to read from
> system_user
> db_name()
> information_schema.tables
> Information_schema.columns
> sysobjects
> Am I doing anything too stupid if the admin would prefer a more secure
> situation, maybe on a company database?
> Willy
>|||Dan,David:
Thank you for making me think about security.
My application does not allow the user to use tables under any other
username (such as dbo) so he is fairly isolated. I realize Access
defaults to dbo but I will be shutting the database window down.
I tried to import a file to my database under a different username (like
dbo) but Access converted it back to the username of the new
database/login so that seems somewhat secure. This is why I am using
Access for a client program.
I am not coding for characters other than Like *[A-Z0-9] so the purging
of other characters from the column and table names that the user has
control of will have to do for now.
In the documentation I am going to highly recommend "isolating" the
application in separate db for "security reasons."
Thank you for suggesting parameters and DML as solutions for preventing
injection. I will keep my eye out for information on them.
I really need to learn more about SQL Server permissions and security.
Willy
*** Sent via Developersdex http://www.codecomments.com ***|||Comments inline
"willy" <willrich33@.yahoo.com> wrote in message
news:1131557696.739603.25830@.g14g2000cwa.googlegroups.com...
> Thanks
> I am building an office application which uses Microsoft Access as a
> client and SQL Server as the server. I am new to SQL Server and I
> don't want to anything that is too stupid.
You already missed this goal by using Access as the front end.

> I am assuming the db
> administrator would create a database specifically for this
> application. The program must be able to create and drop tables and
> works fine when hosted over the internet.
>
This would require opening a SQL port to the internet. Not a particularly
good idea from a security standpoint, especially when you are talking about
the privileges necessary to do what you ask.

> I am preventing everything but characters and numbers in my WHERE
> clauses and data to prevent injection.
>
Doesn't matter. With open network ports and SQL credentials in the Access
app, your server is open to conection via Query Analyzer or any other SQL
client app. Who cares about SQL injection when I can send any SQL command I
desire.
> But besides this measure, the program has these access/security
> needs/issues.
> Tables - Create Drop Read Write
> SPs -- Create Execute
> In addition the program needs to read from
> system_user
> db_name()
> information_schema.tables
> Information_schema.columns
> sysobjects
> Am I doing anything too stupid if the admin would prefer a more secure
> situation, maybe on a company database?
Maybe on a throwaway system. I certainly wouldn't allow any such
application anywhere near any of my servers.
> Willy
>
Sorry if I sound harsh, but I am trying to discourage you from making some
fundamental mistakes in building a SQL application. Access front end
'applications' have caused me more headaches than any other single app dev
environment when connecting to SQL Server.
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP