We have SQL server 7 installed. And we experiencing the performance problem.
When I tried to solve this problem I have found the interesting thing:
We have the table S_EVT_ACT with the non clustered index
S_EVT_ACT_F4 created on [OWNER_PER_ID], [APPT_REPT_FLG] fields and another clustered one
S_EVT_ACT_M4 created on [ROW_STATUS], [OWNER_PER_ID] fields
I use the next select statement and before run this statement I declare the variable @P1 - @P5 and set the values to them:
declare @P1 as char(1)
declare @P2 as char(1)
declare @P3 as char(1)
declare @P4 as varchar(10)
declare @P5 as char(1)
set @P1 = 'Y'
set @P2 = 'Y'
set @P3 = 'N'
set @P4 = '1-K56'
set @P5 = 'Y'
SELECT
..
...
...
FROM
dbo.S_EVT_ACT T1 --(index = S_EVT_ACT_F4)
LEFT OUTER JOIN dbo.S_CONTACT T2 ON T1.TARGET_PER_ID = T2.ROW_ID
LEFT OUTER JOIN dbo.S_OPTY T3 ON T1.OPTY_ID = T3.ROW_ID
LEFT OUTER JOIN dbo.S_ORG_EXT T4 ON T1.TARGET_OU_ID = T4.ROW_ID
LEFT OUTER JOIN dbo.S_EVT_ACT_X T5 ON T1.ROW_ID = T5.PAR_ROW_ID
WHERE
((T1.ALARM_FLAG = @P1 OR T1.APPT_REPT_REPL_CD IS NOT NULL) AND
(T1.APPT_REPT_FLG = @P2 AND (T1.CAL_DISP_FLG = @P3 OR T1.CAL_DISP_FLG IS NULL)) AND
(T1.OWNER_PER_ID = @P4) AND
(T1.TEMPLATE_FLG != @P5 OR T1.TEMPLATE_FLG IS NULL))
ORDER BY
T1.CREATED
In this case Query Analyzer uses S_EVT_ACT_M4 index and the performance is bad!
But when I try to run the same statement and use hard code 'Y' instead of the variable @P2 the Query Analyzer uses the S_EVT_ACT_F4 index and performance is PERFECT.
Question: What the difference between using variable @P2 and hard code 'Y' in the select statement and how to configure SQL server to use the right index in the situation when I can't change the Select statement and use the hard coding?
Any Idea will be very Appreciated.
Dmitri Denejkine
stssystems
MS SQL Server DBA, MIS
(514) 426-0822 ext. 2676
When I run the following query from Query Analyzer in SQL Serer 2005, I get a message back that says. Command(s) completed successfully. What I really need it to do is to display the results of the query. Does anyone know how to do this? declare @SniierId as uniqueidentifierset @SniierId = '85555560-AD5D-430C-9B97-FB0AC3C7DA1F'declare @SniierAlias as nvarchar(50)declare @AlwaysShowEditButton as bitdeclare @SniierName as nvarchar (128)/* Check access for Sniier */SELECT TOP 1 @SniierName = Sniiers.SniierName, @SniierAlias = Sniiers.SniierAlias, @AlwaysShowEditButton = Sniiers.AlwaysShowEditButtonFROM SniiersWHERE Sniiers.SniierId=@SniierId
THis is so annoying. I have 3 ADO executes in my program. THe first one creates a view, the second one performs an outer join on that view and returns a result set, the third execute drops the aforementioned view. THe program that is using this is installed on about 200 computers scattered across Germany and Italy, all querying the same MSsql server 7.0. THe queries run quite quick when few users are actively using the program (after hours for example). however in the heat of the day performance goes up and down dramatically with identical queries taking from 1 to 20 seconds to return their result set. Now I initially thought 'bandwidth issue out of our server'. However I noticed that if I take those three queries and run them from the sql server enterprise manager( running on the same computer as the aforementioned program) then the queries run instantly and the data is in my result pane in less than 2 seconds ALWAYS....even when the program is dogging it with 20 second delays before the result set returns. I know it is hanging on the return of the result set as I put a stop after before each ADO execute in order to check which one was eating up my time. Why is there this dichotomy between running the queries from my enterprise manager versus running them from an ADO object. Both are using TCP/IP (no named pipes involved). I havent monkied with the attributes of the ADO result set so they are all set to default. I have used the sql server profiler to trace these queries and they always run in less than 33 milliseconds. THe duration is also never more than 33 milliseconds. THis stinks of a network resource issue but what always leads me somewhere else is how consistent the performance of the enterprise manager is when it runs the exact same three queries.
Here is my slightly edited connection string Public Const connection_string = "Provider=SQLOLEDB;Server=000.000.000.000;" & _ "User ID=johndoe;Password=janedoe;Network=dbmssocn;" & _ "database=fidojoe"
Here are the 3 ADO executes: conn.Execute (sqlstr_create_view) Set resultset1 = conn.Execute(sqlstr_get_providers_by_DMISID) conn.Execute (sqlstr_drop_view)
When I run query in excel it gives result with different column sequence. The same query gives result with different column sequence when used in query analyzer or VBA Macro. E.g., Select * from ABC.
I hope I am not asking about something that has been done before, but Ihave searched and cannot find an answer. What I am trying to do is torun a query, and then perform some logic on the rowcount and thenpossibly display the result of the query. I know it can be done withADO, but I need to do it in Query Analyzer. The query looks like this:select Varfrom DBwhere SomeCriteriaif @@Rowcount = 0select 'n/a'else if @@Rowcount = 1select -- this is the part where I need to redisplay the resultfrom the above queryelse if @@Rowcount > 1-- do something elseThe reason that I want to do it without re-running the query is that Iwant to minimize impact on the DB, and the reason that I can't useanother program is that I do not have a develpment environment where Ineed to run the queries. I would select the data into a temp table, butagain, I am concerned about impacting the DB. Any suggestions would begreatly appreciated. I am really hoping there is something as simple as@@resultset, or something to that effect.
I am trying to determine which of three stored procedure designs arefastest in the Query Analyzer:One query is a straight SELECT query with all desired rows and a dozen(tblName.RowName = @param or @param = Null) filters in the WHEREstatement.One query populates a #Temp table with the UniqueIDs from the resultsof the SELECT query in the above example, then joins that #Temp tableto get the desired rows.One query users EXEC sp_executesql @sql, @paramlist, @paramin which the @param has the dozen filters.What I'm trying to determine is which is the fastest.Each time I run the query in Query Analyzer it returns the samerecordset (duh!) but with much different Time Statistics.Are the Time Statisticts THE HOLY QRAIL as far as determining which isfastest, and what so I want to look at, the Vale or the Average? Inotice there are different numbers of bytse sen and bytes received foreach of the three queries.Any illumination on this is appreciated.lq
Is Query Analyzer being droped in MS-SQL 2005? I'm using Microsoft SQL Server Managemant Studio and I couldn't find the Store Procedure node and Query Analyzer anymore. Help is appreciated.
Say you have a state column with the name of a state in it. And you need to add a branchId to the table. I know I should not have it in there, and the application should use proper lookup tables, but that's not the case. Can SQL Server query analyzer loop through and update the branchid field based on a lookup in a lookup table? How would that be done?
Hi All, I think I post this in a wrong section but I cant find forum for sql server and i just have a quick question basically, I installed sql server 2005 and I need to debug a store procedure.1. Does query analyzer come with sql server 2005?2. If not how can I debug store procedure in sql server 2005?Thanks in advance
Does anyone know if there is a limitation in Query Analyzer in terms of the number of characters in a query that it will parse?
I am having a problem with some large queries, and I am not sure if it is Query Analyzer, or the SQL Server query parsing engine that is causing the problem.
The query just involves a simple SELECT statement, albeit for a large number of columns.
I'm using SQL Server 7.0. I connect to one database in Query Analyzer and I can use the "Perform Index Analysis" option under the "Query" menu option. when I connect to one of our other databases, the "Perform Index Analysis" option under the "Query" menu option is disabled (greyed out). Does anyone know what the problem could be and how might I be able to enable this option.
Hello In query Analyzer of SQL2000 when i select 2 Select Queries and Run it shows in same Window as 2 Grids I have seen people using seperate grid option to view each query results in a Tab query results Pane in MSSQL 7.
Eg Select * from table1 (in one grid) select * from table2 (in another grid) like a TAB so that i can move from one tab to another.
Is it possible to do that in query Analyzer? Regards
I would like to use the Query Analyzer to create a script that will prompt the user(dialog box) for a response in SQL Server 7.0. I found a post someone mentioned DBMS can return messages and using Query Analyzer.
I'm trying to do a couple of things with some different tables.
With the first table, I have first name and last name in two separate columns.
I'm trying to create a new ID column that would do the following.
Take the first 3 letters of the last name (and remove any non characters such as ',&) and the first 3 letters of the first name, and then combine them.
I know how to use substring to take the first three, and I know how to combine them, but I'm having problems removing the non alpha characters.
For example, if the columns looked as follows: First Last John O'Connor
I'd want the result to look like OCOJOH, however, I'm getting O'CJOH.
The second issue is how would I do something similar if the First and Last Name were in the same column and string.
For example, if the column looks as follows:
Name John O'Connor Publishing
I'd like to pull the first 3 from the first string before the space and then the next 3 so it would be as follows:
JOHOCO
Finally, I want to compare these new IDs, and add numbers to them.
So if I had the following First Last John O'Connor Johnny O'Connell
The first would be OCOJOH01 The second would be OCOJOH02
If there are not any duplicates with the new ID, I'd like to call it OCOJOH01 and then move on.
I would like to change the format of dates that is in colum using query analyzer. The name of the colum is StartD and this how they look: 3292006 I would like to insert the / / . Can someone show me how to accomplish it.
I have a database with couple of store procedure and views. Is there any way that i can find out all sp or views which contains word like *svc*. I am talking about the containt of the sp and views not name.
We are replacing one module so i have to change the all sp and views which use table or view start with svc.
in the market place that will run a query on multiple DBs acrossmultiple servers? Without having to manually connect to each server?If so, can anyone provide a link for it.Thanks
I am new to SQL and need help running a performance check on our companies dtabase. I use SQL Enterprise Manager 2000. Could someone please help me accomplish this?
hi everybody! this is my first post, so I'd like to say hallo to everyone!
I "work" on SQL Server 2000, and I would like to ask you a question.
Is it correct that i cannot set a database user as database owner (using command sp_changedbowner 'user_name')? QA returns this error message: "Server: Msg 15110, Level 16, State 1, Procedure sp_changedbowner, Line 46 The proposed new database owner is already a user in the database." so I have to use sp_revokedbaccess and then I can change the db owner.
how is the query analyzer opening a database??? Does someone knows the command it uses to open the connection ??
I ask this because i have corrupted datafiles stored on a flash card which i can not open with connection.open but the analyzer opens them normally. After that i can open the datafiles using normal code
Does it use any special params?? I get the corrupted files on power down and after that i can not open them from my application. I can only do this after i open them once with the query analyzer
The database is about 20 MB stored on a flash card
Say I have this query in my stored procedure. The problem I am facing is @OrgUID contains no value, so I put these 2 lines to debug. Am I using the right way to debug? I couldn't see the value of @OrgUID using this way. OrgUID is the PK in Organization. INSERT INTO Organization (OrgName) VALUES (@DealerName)SELECT @OrgUID = @@IDENTITYprint @OrgUIDreturn
This has got to be a simple one, but I could not find out how I have this simple proc for test purposes only...
ALTER PROCEDURE dbo.RotoTest( @strSSN VARCHAR(11), @blnUseACHDate BIT = 0, @intInvestorId int = 0)ASreturn 5
Thats right it does nothing but return 5 and thats because I removed all the real code to simplify my question. When I hit this proc in SQL Query Analyzer.. exec RotoTest '123-45-6789', 0, 1 No return value is displayed in Query Analyzer. When I try something like this exec RotoTest '123-45-6789', 0, 1, intRetValue Output (in this situation I get wrong number of arguments) How can I get a return value displayed on my screen in SQL QUERY ANALYZER with out modifying the proc? I do not want to modify the proc in anyway (because I can't), I just want to display the return value
ok the following statement returns the correct results in sql query analyzer but in the .net environment with c# it returns back less 3 records SELECT SUM(ao.amount),bl.dpc,bl.city from billinglocation bl inner join shippinglocation sl on bl.billinglocationid = sl.billinglocationid inner join absorbentorder ao on sl.shippinglocationid = ao.shippinglocationid group by bl.dpc, bl.city billinglocation 1 - 1 shippinglocation 1 - many absorbentorder anybody have any ideas why this might be occuringthanks!
When running a script in the SQL Server Query Analyzer for a large database the output is truncating(I cannot able to see the entire line of my output)!! Can someone please respond to this question I would greatly appreciate it!! Thank you