|
Hi Mika,
Thanks for the reply.Appreciating.
The printer is a n/w printer. The account used for the agent has access to the printer. The account used is the admin user for the server.
Another one thing I have noticed is that, when we execute the package as sql utility it is not printing but when we execute the package manually from the folder it is printing..
Will this info help you to provide some more guidence?
Thanks,
Rahul.
SoftwareDeveloper(.NET)
|
|
|
|
|
What is the command you're using for printing (sp's involved etc)?
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
Here is the code used in the SSIS to print. Procedures used to retrive the printer name. The thing is that , it is updating the log file as doc send to the printer.. for eg: doc1 send to the printer \\nw path\printer name. One more differenc I noticed is that, in that 32 bit machine where it is printing fine having IIS installed but the 64 bit machine not having IIS installed..Will this affect when print using a job ?
PrintStatus("PrintStatus").Value = 3
flgFindPrinter = False
AttemptCount = -1
While (Not flgFindPrinter And AttemptCount < MaxRetryAttempts("MaxRetryAttempts").Value)
Dim prnDoc As New System.Drawing.Printing.PrintDocument
For Each prn As String In prnDoc.PrinterSettings.InstalledPrinters
If prn.ToLower = PrinterName("PrinterName").Value.ToString.ToLower Then
flgFindPrinter = True
End If
Next
PrintStartTime("PrintStartTime").Value = Date.Now
If flgFindPrinter Then
defaultPrinter = prnDoc.PrinterSettings.PrinterName
Dim wsNetwork As Object
Try
wsNetwork = CreateObject("WScript.Network")
wsNetwork.SetDefaultPrinter(PrinterName("PrinterName").Value)
Dim IE As Object = CreateObject("InternetExplorer.Application")
IE.navigate(FolderPath("AbsoluteFolderPath").Value & DocName("DocName").Value)
While (IE.QueryStatusWB(6) <> 3)
Threading.Thread.Sleep(500)
End While
IE.ExecWB(6, 2, Nothing, Nothing)
Dts.Events.FireInformation(1000, "Print Document", FolderPath("AbsoluteFolderPath").Value & DocName("DocName").Value & " Successfully Printed to " & PrinterName("PrinterName").Value, "", 0, False)
Catch ex As Exception
Dts.Events.FireInformation(2000, "Print Document", ex.Message, "", 0, False)
PrintStatus("PrintStatus").Value = 2
Finally
If wsNetwork IsNot Nothing Then wsNetwork.SetDefaultPrinter(defaultPrinter)
End Try
Else
Dts.Events.FireInformation(2000, "Print Document", PrinterName("PrinterName").Value & " Not Found", "", 0, False)
PrintStatus("PrintStatus").Value = 2
End If
AttemptCount += 1
End While
Dim strLog As String
If flgFindPrinter Then
strLog = FolderPath("AbsoluteFolderPath").Value & DocName("DocName").Value & " Successfully Printed to " & PrinterName("PrinterName").Value
Else
strLog = FolderPath("AbsoluteFolderPath").Value & DocName("DocName").Value & " Failed to Print on " & PrinterName("PrinterName").Value
End If
If AttemptCount <> 0 Then
strLog &= " With Retry Attempts " & AttemptCount
End If
LogDescription("LogDescription").Value = strLog
RetryAttempts("RetryAttempts").Value = AttemptCount
Dts.TaskResult = Dts.Results.Success
SoftwareDeveloper(.NET)
|
|
|
|
|
OOPS Finally, the issue got resolved!! After analysing more into it has been revealed the following was the casue..
The SSIS package is creating IExplorer.exe and when more IExplorer.exe are there in the process then it is getting stuck or wierd. by this the packet send by the job not able to print some time..
This is resolved by using Quit method of the IE object in the program after creation...
Thanks,
Rahul..
SoftwareDeveloper(.NET)
|
|
|
|
|
I was just investigating the proc and noticed the same. Another thing is that if I'm reading correctly, your log file will show successfull send if the printer is found even if the printing itself goes to an exception.
But anyway, main thing is you got it solved,
Mika
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
Yes Mika, you are right as the program will write a sucessfull update to the log even if it fails after finding the printer successfully..
Thaks much for your responses.I appreciate that!
SoftwareDeveloper(.NET)
|
|
|
|
|
No problem
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
hi
i have sql CE database than contains 1 milion records
i need very quick search.
what is better to do ? Index or Param ?
or someone has any offer for me ? (i write in C#)
thanks alot for any help
|
|
|
|
|
Indexes provide a method of retrieving data very quickly, however you must ask yourself some questions:
1) How many rows will be returned in a typical query ? (10s,100s,1000s) If the query returns many rows it may actually be faster to perform a full-table scan rather than reading through the index. In fact the query optimizer may actually perform a full table scan instead of an index scan, even though the index is present.
2) What is the nature of the data; does it contain many unique values ? For example consider a field called, status (Active / Inactive). This may not be a good choice for an index because it doesn't have very many unique values and retrieving these values would end up causing sequential reads through the index.
3) When designing the index, ideally you would have the index contain items in the select or where clause. For example "select a,b,c from mytable where z = myValue". A good index would contain both Z and A, this way when searching through the index it finds the data that you are looking for (z) and it also has the data that you want, (a). There is no need for the optimizer to go to the main table and retrieve data, everything is available in the index. FAST !
4) The order of the values in the index make a big difference also, but I can't remember a good example.
Lots of things to think about. Post more details about the nature of your query and maybe I can be of more assistance. david
|
|
|
|
|
OK
i have 1 milion records whit 2 fields (barcode(unic) and serial)
i need to scane barcode and show the serial that belong to him.
i need the most fastest way to do that.
what to do ?? index or param ??
help....
thank's alot
(i work on WinCE)
|
|
|
|
|
If these are the only 2 values in your lookup table and the Barcode is unique, then I would make the Barcode a primary key and by default a unique index would be generated by the database engine. There would be no need for an additional index to be created. Regarding parameters, you should always try to make your queries with parameters, this will allow the dbEngine to cache the execution plan for your query, this reduces the amount of CPU required when executing a SQL statement.
For example, "select MySerial from BigTable where Barcode = ?" (not really the syntax, but you get the idea) The dbEngine would parse this SQL statement, choose the best execution plan and store it in it's statement cache so each time it sees this statement it knows how to proceed. This statement will be executed thousands of time with nothing changing but the value for the barcode.
With this type of table and SQL 2005 you should see response times easily under 1/2 second.
|
|
|
|
|
so, index is the best for my project ?
am i right ?
|
|
|
|
|
An index and the use of parameter queries are NOT mutually exclusive, you can (and should) use both techniques for your solution. Yes, an index will give you the performance results you want.
Remember, if your table has the Primary Key defined as the Barcode, then no additional index is required. By defining a primary key the DBEngine will automatically create a unique index for you behind the scenes.
Try it out, you can always create and drop an index to test for any differences in response time.
|
|
|
|
|
Parameter helps you to reuse the SQL statement, index provides faster access to desired rows, but also has it's own downsides.
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
Hi All
I have a question, I have 2 offices one in botswana and one in South Africa, I am building an intranet for our company that will handle our logistics information, users will logon to the same website or a clone of the website depending on thier country, I want to set something up so users in botswana use that databse and users in south africa use the db in SA, but the data must somehow come together so users in botswana can see the RSA data loaded and vice/versa problem is the line speed from botswana to south africa sucks so the main reason I want 2 databases is for speed of the website in botswana. Any Ideas besides replication maybe clustering of somekind.
Also should run SQL 2000 or 2005 still desiding what DB will be best to use license wise or so on.
|
|
|
|
|
I would highly recommend SQL 2005 over 2000. It is much faster and contains more features that have made my life so much better. Regarding your design, I would tend to look at having 2 separate databases each local to your individual office. Depending on your DB design, you may want to roll your own replication logic and schedule updates between the two sites. The other thing to consider is if you are going to develop your sites with ASP.NET, you can look into the .NET caching object and see if caching will work for you without replicating the data.
Sounds like an interesting challenge.
BTW: I was at Chobe National Park a few years ago and had a really great time; I got some beatuiful pictures of the animals.
|
|
|
|
|
If you want to *split* your database on two separate servers the main problem you have is logical, not technical.
First you must find a way to separate rows on tables so that it's rare that people in Botswana need (especially update, insert or delete) the rows that are maintained in South Africa. Typically this is done using different kinds of responsibility information and so on. Otherwise you will have lot's of update collisions which will be very problematic and require a reliable, (potentially) high speed connection between sites.
After you have found a way to logically separate the data you can use several techniques (few options with some of their good and bad effects):
- replication, which allows you to loose connection for a while, but has problems since data is (commonly) duplicated
- distributed operations with two-phase commit, data is consistent, but loss of connection may paralyze the system also typically needs modifications at program level
- federations, data is consistent and no need to change the program. Also workload is divided between sitse. Loss of connection may paralyze the system (depending how program handles this)
Hope this helps,
Mika
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
I d´ont know but i really d´ont like replication to
I think you have a problem there i d´ont see how you can get "the best of two worlds"!!!
I would create a parent database and child databases (1 or more doesn´t matter). But, i would really in fact create one database, the parent one.
So, let the users connect to the database, if sucess ok else let it connect to the child database.
The child database would trigger a check (say every 5 min) in the parent to see if can connect, if so update parent: empty the child and fill parent with data. Invest in datetime variables here to get records ordered!
But, it can get really messy if you critical data (when you can´t make something before others or same time) let only connect to parent database then.
That´s for editing procedures, for report procedures make whatever, just show all you got(data), display the report date and if is a "blue-print", not 100% check accurate
good luck
nelsonpaixao@yahoo.com.br
trying to help & get help
|
|
|
|
|
Hello all.
I am interested in hearing about other's experiences with CLR Stored Procedures (C#, VB.NET, whatever) in SQL 2005. Positive, negative, no difference. Better with single-tables than with large joins. Techniques and optimizations. What worked and did not work and why. What things they are better for than others (i.e. heavy mathematical or string operations). Etc.
I am also posting a small message in the C# forum to see if any developers over there have experience and would like to come over here to share.
I am looking to see if any of my operations can be optimized by changing them to CLR-based SPs. But rather than go the shotgun approach and rewrite everything, I want to get the best bang for my buck, and figured starting here would be a good idea.
Thanks!
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
James R. Twine wrote: I am looking to see if any of my operations can be optimized by changing them to CLR-based SPs.
Not sure I understand your question. SQL Server (and others) have supported developing stored procedures using external languages like C/C++ for many years now. What differentiation are you making between that and using a CLR based language for developing stored procedures?
led mike
|
|
|
|
|
I know about Extended Stored Procedures and have even written/used them in the past.
CLR-based SPs run in the .NET environment, and even though it is hosted by SQL Server, they can be considered more stable because errors/exceptions cannot cause instabilities in the XP server's executable (stepping on its memory, for example). This is one reason why they may be more attractive, especially if deploying them to a server that is used for other purposes at a client site.
They also may work faster (other than the initial compilation hit) on systems that would normally run a XSP in a separate process because the cross-process overhead is eliminated (somewhat). CLR-based objects can be used as UDTs.
Anyway, the part of my post that you quoted was miswritten - of course I can optimize some of my operations. The question is more along the lines of what KINDS of operations are likely to be sped up by moving to a CLR-based SP. I am not trying to compare the performance of XSPs vs. CLR-SPs.
Peace!
-=- James Please rate this message - let me know if I helped or not!<hr></hr> If you think it costs a lot to do it right, just wait until you find out how much it costs to do it wrong! Remember that Professional Driver on Closed Course does not mean your Dumb Ass on a Public Road! See DeleteFXPFiles
|
|
|
|
|
CLR based code may/will be useful for the areas where TSQL is not optimised; that is procedural code, string handling and complex calculations. You also have access to .NET Framework classes for registry, files, XML etc.
Comparing the performance of XSPs and CLR is probably moot anyway since XSPs are deprecated in SQL 2005 onwards.
|
|
|
|
|
I've used CLR integration for several cases and I have to say that I have totally discarded using plain C so my answer may be a bit biased .
I like to use normal T-SQL procedures and plain SQL especially when transactional processing is needed and/or when working with result sets. T-SQL performs better in these areas. What I typically do, is that I only 'extend' T-SQL with C# based functionality, not replacing it. Some of the usages have been:
- complex mathematical functions not implemented in T-SQL. Using these for columns in result sets
- integration to the database server or even to the client calling the db
- file handling capability for stored procs (and also logging)
- extended string handling (T-SQL is actually very lousy in this) etc.
The negative aspects I see are:
- integration to the actual connection calling CLR based functionality. It's working, but for some reason not very intuitive (at least not for me)
- installation is a bit difficult if it's meant to be done by client. Creating a full silent install script for the whole database server requires more work than I originally expected
- cannot use fibers so in some installations it may cause performance problems on other areas of database usage
Mika
The need to optimize rises from a bad design.
My articles[ ^]
|
|
|
|
|
Suppose a left table name is: tblstudent. Which has two column , studentID(KEY) and studentName. On the other hand right table name is tblMarks. In this first column is studentID(key) and second column is ‘Division’ of type bit. The student who got First class , with his respective name , Division value is entered 1.But student, who did not get First class, not entered in the table. Now what should be the query that presents first column all student name from left table(tblstudent) and second column Division with respect to name. Student who not get first class present as null value.
|
|
|
|
|
You are joking of course. Why would anyone want to do your homework for you? Without even a please?
Bob
Ashfield Consultants Ltd
|
|
|
|
|