Is Trigger Launched By Program Caller Or SQL Server?
Nov 8, 2007
Hi,
I have a question about sql server trigger. For example, I have a trigger for table insert. The way it works is:
A: my program run the insert query, and wait, then the record is inserted, then the trigger is launched, after the trigger job done, my program then return,
or
B: my porgram run the insert query, and wait, then the record is inserted, then my porgram returns, then the trigger is launched. Basically, my program does not have to wait the trigger job done.
Which way is right? or neither one is right.
The problem we are facing right now is, we need to run a pretty big stored procedure and it takes a long time. I am thinking about move some of them to a trigger job, so our porgram don't have to wait for everything done.
Any inputs are welcome. Thanks.
I have a VB program to sit somethere. I like to call that program with passing two parameters from a trigger on the SQL Server. The parameters are the contents of the table which the trigger is created on.
I have created a trigger to call a program that is written by our program. The program is basically read the record in the table and write to a text file, then delete the record from the table.
The trigger is a after insert trigger. After we added the trigger, we insert a record to the table. The result is that the record still and did not get deleted. Also, the text file didn't get created either. It seems that it take a long time for the record to be written to the table.
But if we just run the program (a exe file), it can write a text file in the folder and delete the record. the trigger is basically:
USE [Zinter] GO /****** Object: Trigger [dbo].[ZinterProcess] Script Date: 04/29/2014 18:34:56 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
I'm having my website hosted with webhost4life.com which is very helpful and a really great company if you are using Visual Web Developer with SQL Express. The question I have for anyone who can help me is that my site will offer member roles for customer account maintenance with login and the works. As you know, when you use memberships with Visual Web Developer, it associates all these controls with a database called aspnetdb.mdf. And you maintain this database through the asp.net configuration control. Once this database is launched, I've learned how to access it by changing my web.config file removing the LocalSQLServer and adding one with the connection string to the aspnetdb.mdf database on the server. My question is, once I've done this and connected through that string, can I still use the asp.net configuration to edit the database (e.g. the users, roles, etc)?
tblHIT - this table will reveive record every minutes Date | Time | Main_ID | Hit ------------------------------------ 3/1/2006 | 100 | 200 | 8700 ... ... ... 4/14/2008 | 100 | 200 | 4500 4/14/2008 | 100 | 201 | 8700 4/14/2008 | 200 | 200 | 3500 4/14/2008 | 300 | 201 | 7700 ... ...
I've also 1 job in SQL Server Agent will execute STORED PROCEDURE and will filter 7 days record before from current date and insert it into tblHIT_7days. tblHIT_7days shown as follow tblHIT_7days Date | Time | Main_ID | Hit ------------------------------------ 3/7/2008 | 100 | 200 | 8700 ... ... ... 4/13/2008 | 100 | 200 | 4500 4/13/2008 | 100 | 201 | 8700 4/13/2008 | 200 | 200 | 3500 4/13/2008 | 300 | 201 | 7700
I've plan to create TRIGGER. This TRIGGER will insert the appropriate record from tblHIT into tblHIT_7days and also delete a appropriate record in tblHIT_7days. This INSERT and DELETE transaction depend on current date.
SSRS report uses an SSIS package as input and is launching an old and deleted version of the package from the MSDB SQL Server store.
Rebooting the server makes the problem go away: correct package is found after the reboot.
Symptoms: 1) Package is first deleted from SQL Server MSDB package store. 2) Report that uses this package is run and expected package not found error occurs. 3) Revised package is imported into the SQL Server MSDB package store. 4) Package is run directly from SQL Server Management Studio. Revised package runs. 5) Report that uses package is run and the old package that was deleted in step 1 above runs.
Is there some reporting service caching of SSIS packages going on here? Is there a way to get around this without having to reboot the server?
what the program will do if we caught that exception .. i need some suggestions ... i got this exception(String or binary data would be truncated. The statement has been terminated.).. will it affect the functionality of the program...
I am using SQL Server 2000 and SQL authentication in a webappliacation. All data access is done via single SQL Server account.In my front end I am using forms authentication. Is there a way toretrieve the forms identity (or just a username) from SQL Server?Thanks,Lac
Is there any way of obtaining any information about the caller of a stored procedure from within the procedure, specifically machine name or IP address?
I'm looking for a built-in SQL function, rather than passing this information in as a parameter!
With the new features of SQL Server 2005 for error handling (TRY...CATCH blocks), how are you propagating errors back to the caller? For example, lets say we have 3 stored procedures: dbo.usp_UpdateSomeTable1 dbo.usp_UpdateSomeTable2 dbo.usp_UpdateSomeTable3
Let say some application calls dbo.usp_UpdateSomeTable1, in turn dbo.usp_UpdateSomeTable1 calls dbo.usp_UpdateSomeTable2 and in turn dbo.usp_UpdateSomeTable2 calls dbo.usp_UpdateSomeTable3.
Now if dbo.usp_UpdateSomeTable3 generates an error, how do you handle propagating this back to the caller?
I envision encapsulating the contents of each procedure in a TRY...CATCH block like so:
BEGIN TRY ...do some stuff END TRY BEGIN CATCH ...handle errors - whether generated from our own RAISERROR statements or by the database engine. END CATCH
Now my problem is I would like to capture all the error variables and toss them back to the caller and keep sending that information up the stack. So far my attempts have been pretty unreadable and end up being just a cluster of text.
I am about to build a program that will require the use of DB. In the pass I used Access as my back end, but this time I would like to use Sql Server. I just have a few questions before I begin.
1. After deploying and installing my program, do I need to have sql server installed on users system or can the DB file exist on its own and just use ADO.NET to access the file? (As I done in the pass to access my Access mdb file)
2. If I can deploy a sql file -- can it be done with Sql Server Express?
3. If it can't be done, what db program should I use?
Hi, My company has recently migrated our Informix database to SQL server 2K. The data is successfully migrated and the client are able to connect to the database. However, when trying to run a VB application to access the data, it keeps on prompting for SQL server login whenever an sql statement is executed. What could be the problem? We are using SQL server 2k on Windows 2000 and on the client Windows 95. Thanks!
Hi. First 3 paragraphs are about problem in general - this is for those who consider them well experienced and may have better ideas about how to solve this whole thing. In forth paragraph is the tehnical question.
Hi. First 3 paragraphs are about problem in general - this is for those who consider them well experienced and may have better ideas about how to solve this whole thing. In forth paragraph is the tehnical question.
Situation: So me was trying to find out why files are saved in database incorrectly. First idea was to create a MD5 checksum of a file in my application and then create one with SQL script that saves data in database (data being the file, by the way).
On software side it worked fine 'cuz i'm developing in Visual Basic .NET 2005 which has a function that return a 32 byte array of hash from a data that you pass to it (like file) - GREAT!
SQL Server 2005 side - not so great. The only function that I have found so far that creates hash is HashBytes that is supposed to do it's job only there's a limintation to data size which means i cant make hash of say 4mb big file.
Problem: So I figure maybe i could create a vb.net program that return a hash from a data passed to it and call it with SQL script (because hashbytes function doesnt work for me in case you didnt read the first 3 paragraphs)... but I don't know how:( Any ideas?
Hi. First 3 paragraphs are about problem in general - this is for those who consider them well experienced and may have better ideas about how to solve this whole thing. In forth paragraph is the tehnical question.
Situation: So me was trying to find out why files are saved in database incorrectly. First idea was to create a MD5 checksum of a file in my application and then create one with SQL script that saves data in database (data being the file, by the way).
On software side it worked fine 'cuz i'm developing in Visual Basic .NET 2005 which has a function that return a 32 byte array of hash from a data that you pass to it (like file) - GREAT!
SQL Server 2005 side - not so great. The only function that I have found so far that creates hash is HashBytes that is supposed to do it's job only there's a limintation to data size which means i cant make hash of say 4mb big file.
Problem: So I figure maybe i could create a vb.net program that return a hash from a data passed to it and call it with SQL script (because hashbytes function doesnt work for me in case you didnt read the first 3 paragraphs)... but I don't know how Any ideas?
I am working on sql server bulk copy program. I am getting data files from our vendors for shares and stocks. The data files are pipe separated values. for ex the Ascii file format is
8388182|"ACC consultanats"|"rating for the current financial year"|23
My doubt is i have four columns in my sql server table named stocks.
In this the third column named memo1 in the data file would be a large volume data. That is it may be upto one full A4 size page. One important thing is, data in the third column is not formatted.
Since it is very urgent, let me know what would be the format file for this type of data file and the bulk copy program utility.
I found a search-and-replace program for SQL server that works GREAT, but I have a list of about 200 words to search for, with corresponding replacements. Rather than editing the code below for *each* word and running it 200 separate times, I'd like to iterate through the list, but my MS-SQL programming skills are...light (to say the least). Anyone have any ideas how I can create a list or hash-type variable and use the code to loop through and do the replacements all at once?
/* * * Search & Replace * * Use Ctrl+Shift+M to replace template values * */
set xact_abort on begin tran
declare @otxt varchar(1000) set @otxt = '<string1, text, text to be replaced>'
declare @ntxt varchar(1000) set @ntxt = '<string2, text, replacing text>'
declare @txtlen int set @txtlen = len(@otxt)
declare @ptr binary(16) declare @pos int declare @id int
declare curs cursor local fast_forward for select id, textptr(<field_name, sysname, target text field>), charindex(@otxt, <field_name, sysname, target text field>)-1 from <table_name, sysname, target table> where <field_name, sysname, target text field> like '%' + @otxt +'%'
open curs
fetch next from curs into @id, @ptr, @pos
while @@fetch_status = 0 begin print 'Text found in row id=' + cast(@id as varchar) + ' at pos=' + cast(@pos as varchar)
I've written a piece of database software in Visual Basic (Visual Studio 2005) to use in my office. My office has networked computers all connected to a server (windows server 2003). I have an old-ish version of SQL server on the server computer (version 7). The software works perfectly within the office environment - each computer on the network connects to the SQL server on the server computer and works very efficiently.
I now want to be able to access the database from home by running the software on my home PC. I want the software to somehow connect to SQL server in the office over the internet. Having read many of the threads about remote SQL server connections, I feel totally out of my depth. I vaguely understand that SQL server needs to be somehow configured to receive connections from the 'outside world'. I don't know how to do this. I also don't know what I need to do on the Windows server to allow this to work. I thought I might be able to use the computer's IP address in the connection string, but using IPconfig on the server I only get network IP addresses - the server may be behind a router... How do I get the proper internet address? Once I've set up the server side to work with remote connections, how do I get my software to communicate with that server? Do I just need to change the connection string and that's it? What would the format of the connection string be?
I'm very sorry for asking so many questions in one go! I have ended up a bit frustrated after reading many threads and articles about SQL remote connections - it's all rather advanced and don't understand most of it!
Thank you very much in advance for any help you can provide.
I have a vb6 program running fine on a domain on SBS 2003 with the backend connected to sql express. I have added a third computer to the domain and I am unable to run the program on the third computer. I am almost certain that it is not a user, login, or role issue. I would appreciate ideas on how to localize this problem.
I am having difficulty connecting to SQL Server 2000 on one of ourservers via a VB6 program on Vista. I can connect fine to a differentserver, but it gives me the following error with the server inquestion:"Unable to connect to database. Please check your internet connectionError# -2147467259[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist oraccess denied"Using the program, I am able to access the database just fine whilerunning on Windows XP, but when I run the program on Vista, it givesme that error message for that server. If I change the connectionstring to a different server address, it works fine on Vista. Whatdifferences in the servers might cause this?Here is my connection string:"driver={SQL Server};Server=ipaddress;Uid=userID;Pwd=pwd;databa se=db"
I am looking for the SQL Server 2000 Licensing Setup Utility Programand cannot find it. Everything I read says, goto ControlPanel->Administrative Tools->SQL Server License Utility. When I gothere, I do not see... Any help would be Greatly appreciated!Setup:Win 2000 ServerSQL Server 2000 Standard Edition Svc Pk 3.Thanks.
I have written ETL software that runs on SQL Server. We are running it for the first time on a 4cpu (2 x dual core) machine on sql server 2005.
One of the things this software does is perform a 'select * from tablename' to validate that the tables passed to it as parameters exist. This has worked fine on previous releases and on single cpu machines because what the optimiser decides to do is to return just the first page of data and then fetch more. I guess it even works in 2005 standard edition.
However, 2005 enterprise edition allows parallelism. And what the optimiser is deciding to do with such a query is to parallelise it and fetch all rows and then give the result back to the program. So, instead of seeing a fraction of a second to return the first page of data we are seeing up to 90 seconds and the database goes and fetches 15M rows in parallel.
Obviously, what we would like to do is to somehow tell the optimiser that this set of programs should not perform any parallel queries. Or, we would like to turn parallelism off on the specific tables we are dealing with for the period of running these ETL programs....they have no need of parallel processing at the database level for virtually all the calls that are performed.
Would someone please be so kind as to advise us if we can do something like pass a parameter to ODBC to stop parallelism or if we can issue commands against specific tables to stop parallelism for a period and then turn it back on?
Hello All, I want to write Batch Program which will insert Data into Table every day based on some conditions. can anyone please let me know how to write Batch Process in SQL server 2005?? Thanks.
I am wondering if there is a way to create a procedure in a logging database that can identify the source database from which it is invoked. DB_NAME() of course returns the name of the database in which the stored procedure exists. I could pass the database name as a parameter to the proc, just wondering if there is another way.
This is SQL 2005, I did look into the sys.dm_exec views but nothing seems to have a dbid reflecting the calling context.
Hi,My situation follows: I set up a database called TempDB and a test connection to it that works on my machine.In my database class I am trying to create a connection by doing the following: connToLookUpData.ConnectionString = "Integrated Security=SSPI;Initial Catalog=dbTest;Data Source=testServer;" but I am getting the following error: Login failed for user "Joe/ASPNET"i have windows XP OS.I based the connection string on the properties of my connection to Database 'Test'.Joe is the name of my computer. Both the application and SQL Server are now on my local machine.What am I doing wrong? any help greatly appreciated.Thanks much,Joe
We want to deny access to sql server 2005 database by the sql management studio or any other sql editor while our developed application can access the database even malicious user gets the login name and password by disassembling our code
I am developing a program to connect to SQL 2005 Express. I don't know if I need any CAL license in order to make the connection. If it is not necessary for the Express Edition case, how about if my client upgrate to SQL 2005 in the future? Do I need CAL license for SQL 2005?
Basically I'm trying to produce a report that shows qualified employees for each program. Each employee can possess many qualifications. There will be no programID parameter submitted by the user. I just want to produce the report which shows the programs and the qualified employees for each. I thought I had a query that was working but once I added a different ProgramID into the ProgramModules table things went south.
Here are my tables:
tblEmployees (table of employees) - EmployeeID - EmployeeName
tblQualifications (table of qualifications) - Qualification_ID - QualificationTitle
tblEmployeeQualification (table of all employees qualifications) -EmpQualificationID -EmployeeID (fk for tblEmployees) -QualificationID (fk for tblQualifications)
tblPrograms (table of programs) -ProgramID -ProgramTitle
tblProgramModules (table of qualifications required by each program) -ProgramModuleID -ProgramID (fk for tblPrograms) -QualificationID (fk for tblQualifications)
Here is the query I was working with that works when there are only records in the ProgramModules table that use the same ProgramID